redis增刪改查


一、啟動

  1、服務端啟動

    redis-server

  2、客戶端啟動

    (1)redis-cli  不支持中文

    (2)redis-cli --raw  支持中文

  3、運行測試命令

    ping

    返回PONG則代表連通

二、切換數據庫

  1、切換數據庫

    select n

    redis一共有15個數據庫,故0≤n≤15,默認為0數據庫

三、redis鍵值對說明

  1、redis是key-value的數據結構

  2、每條數據都是一個鍵值對

  3、鍵(key)的類型是字符串(string)

  4、值(value)的類型分為5種:字符串(string)、哈希(hash)、列表(list)、無序集合(set)、有序集合(zset)

四、字符串(string)

  說明:字符串是redis最基本的類型

  1、添加修改值  set

    格式:set key value  

      如果鍵存在則是添加

      如果不存在則是修改

    案例:set user1 aa  添加一個鍵為user1 值為aa

       set user1 bb  將鍵為user1的值修改為bb

  2、設置鍵值及過期時間  setex

    格式:setex key seconds value  這里過期時間seconds的單位為秒

    案例:setex user2 5 cc  設置鍵為user2 值為cc 過期時間為5s 

  3、設置多個鍵值  mset

    格式:mset key1 value1 key2 value2 ...

    案例:mset user3 dd user4 ee

  4、追加值  append

    格式:append key value

    案例:append user1 ff    get user1就返回bbff

  5、獲取值  get/mget

    (1)獲取單個值

      格式:get key

      案例:get user3  返回dd

    (2)獲取多個值

      格式:mget key1 key2 ...

      案例:mget user3 user4  返回dd ee

  6、查找 keys

    格式1:keys key  查找單個鍵值對

    格式2:keys *  查找所有鍵值對

    案例1:keys user1

      返回user1則該鍵查找到了

      返回為空則該鍵沒查找到

    案例2:keys *

      返回 user1 user3 user4

  7、查看鍵值對是否存在 exists

    格式:exists key 

    返回:

      1:存在;

      0:不存在

  8、查看鍵值對類型 type

    格式:type key

    案例:type user1

    返回:string

  9、設置鍵過期時間 expire

    格式:expire key second

    案例:expire user1 5  給user1設置5s過期

    注:expire跟setex的區別:expire是給已存在的鍵值對設置過期時間,而setex則是添加鍵值對並且設置過期時間

  10、查看過期時間 ttl

    格式:ttl key

      說明:

        返回值:>0:實時有效時間,單位s,=-1:永久有效;=-2:鍵值對不存在

  11、刪除 del

    (1)刪除單個鍵值對

      格式:del key

      案例:del user3

    (2)刪除多個鍵值對

      格式:del key1 key2 ...

      案例:del user3 user 4

五、哈希(hash)

  說明:

    (1)、hash是用於存儲'鍵值對'集合

    (2)、每個hash中的鍵可以理解為字段(filed),一個字段(filed)對應一個值(value)

    (3)、hash中值(value)的類型為字符串(string)

    (4)、同一個hash中字段名(filed)不可重復

  1、新增單個字段 hset

    格式:hset key filed value

    案例:hset huser1 name tom  新增一個hash,其中key為huser1,filed為name,value為tom

  2、新增多個字段 hmset

    格式:hmset key filed1 value1 filed2 value2 ...

    案例:hmset huser2 name marry sex nv age 10  

    新增一個hash,key為huser2,filed1為name,value1為marry,filed2為sex,value2為nv,filed3為age,value2為10

  3、獲取hash中的鍵和值 hget/hkeys/hvals/hgetall

    (1)獲取單個值 hget

      格式:hget key filed

      案例:hget huser2 name ---->marry

    (2)獲取多個值 hmget

      格式1:hkeys key filed1 filed2

      案例:hmget huser2 name sex ---->marry nv兩個值

    (3)獲取所有字段 hkeys

      格式:hkeys key

      案例:hkeys huser1 ---->name sex age三個鍵

    (4)獲取所有值hvals 

 

      格式:hvals key

      案例:hvals huser2 ---->marry nv 10三個值

    (5)獲取包含字段(filed)的值(value):hgetall

      格式:hgetall key

      案例:hgetall huser2 ----> name marry sex nv age 10

  4、刪除值 hdel

      格式:hdel key filed1 filed2 ...

      案例:hdel huser2 name sex

      hgetall huser2 ---->age 10只剩最后一個組了

  5、刪除整個hash del

      格式:del key

      案例:del huser2

         keys * ---->空,證明被刪除了

六、列表

  說明:

    (1)、列表中的value的類型為string

    (2)、列表中每個值按添加的順序排列

    (3)、列表中的每個值是可以重復的

  1、新增 lpush/rpush/linsert

    (1)從左側添加 lpush

      格式:lpush key value1 value2 value3

      案例:lpush luser1 aa bb cc

    (2)從右側添加 rpush

      格式:rpush key value1 value2 value3

      案例:rpush luser1 dd ee ff

    (3)按指定位置添加 linsert

      格式:linsert key before/after value(指定值) value1

      案例:linsert luser1 before dd xx  在dd左側添加一個xx

  2、獲取 lrange

    格式:lrange key start stop  按索引獲取

    案例:lrange luser1 0 -1 ---->cc bb aa xx dd ee ff

      說明:0代表首位,-1代表末尾 故此處是獲取整個列表

  3、修改 lset

    格式:lset key index value  按照指定索引位置修改

    案例:lset key 3 yy

       lrange luser1 0 -1 ---->cc bb aa yy dd ee ff,xx變為yy了

  4、刪除值 lreml

    (1)刪除單個或多個相同值

      格式:lrem key count value  (count>0:從頭往為刪count個value,count=0:刪除所有value,count<0:從尾往頭刪count個value)

      案例:新增列表:rpush luser2 h0 h1 h2 h3 h0 h1 h2 h0 h1 h2

        (1)從頭往尾刪除2個h0

          lrem luser2 2 h0

          lrange luser1 0 -1 ---->h1 h2 h3 h1 h2 h0 h1 h2,此處前兩個h0被刪除了

        (2)從尾往頭刪除2個h1

          lrem luser2 -2 h1

          lrange luser1 0 -1 ---->h1 h2 h3 h2 h0 h2 后兩個h1被刪除了

        (2)刪除所有h2

          lrem luser2 0 h2

          lrange luser1 0 -1 ---->h1 h3 h0 此處h2被刪除完了

    5、刪除列表 del

      格式:del key    

      案例:del luser1

         keys * ---->空,

七、有序集合 set   

  說明:

 

    (1)有序集合里的value類型為string

 

    (2)集合里不允許存在重復值

 

    (3)集合里的值只能添加和刪除,不能修改

  1、新增/添加 sadd

    key存在則為添加

    key不存在則新增

    格式:sadd key value1 value2 ...

    案例:sadd suser1 aa bb cc dd

  2、返回 smembers

    格式:smembers key

    案例:smembers suser1 ---->aa bb cc dd

  3、刪除指定值 srem

     格式:srem key value1 value2

     案例:srem suser1 aa bb

        smembers suser1 ---->cc dd ,aa和bb已經被刪除

  4、刪除集合 del

      格式:del key

      案例:del suser1

      keys * ---->空 證明已經被刪除了

 

八、有序集合 zset

  說明:

    (1)有序集合里的value類型為string

    (2)集合里不允許存在重復值

    (3)每個值都會關聯一個分數(score),分數(score)可以為負數

    (4)集合里的值只能添加和刪除,不能修改

  1、新增/添加 zadd  

    key存在則為添加

    key不存在則新建

    格式:zadd key score1 value1 score2 value2 ...

    案例:zadd zuser1 1 aa 5 bb 8 cc 3 dd

  2、獲取 zrange/zrangebyscore/zscore

    (1)獲取所有 zrange

      格式:zrange key start stop

      案例:zrange zuser1 0 -1 ---->aa bb cc dd

    (2)獲取所有值及分數 zrange

      格式:zrange key start stop withscores

      案例:zrange zuser1 0 -1 withscores -->aa 1 bb 5 cc 8 dd 3

    (3)按分數范圍獲取 zrangebyscore

      格式:zrangebyscore key min max

      案例:zrangebyscore zuser1 2 6 ---->dd bb

    (4)返回值的分數 zscore

      格式:zscore key value

      案例:zscore zuser1 aa ---->1

  3、刪除值 zrem

    (1)刪除指定值 zrem

      格式:zrem key value1 value2 ...

      案例:zrem zuser1 aa bb

         zrange zuser1 0 -1 ---->cc dd,aa和bb被刪除

    (2)按分數范圍刪除 zremrangebyscore

      格式:zremrangebyscore key min max

      案例:zremrangebyscore zuser1 2 6  刪除分數在2到6之間的值

         zrange zuser1 0 -1 ---->dd,只剩dd了,aa和bb在上面已經被刪除了,集合里還剩cc 8 dd 3,dd的分數在2到6之間,故刪除,就只剩dd

  4、刪除集合 del

    格式 del key

    案例:del zuser1

    keys * ---->空,證明已經被刪除了

 

 

注:redis錯誤解決:

  錯誤提示:(error) MISCONF Redis is configured to save RDB snapshots

  解決方法:127.0.0.1:6379> CONFIG SET stop-writes-on-bgsave-error no


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM