1. 程式人生 > 實用技巧 >redis資料型別學習筆記

redis資料型別學習筆記

redis資料型別學習筆記

之前是有學過redis不過一直沒用導致忘光光,最基本的知識就不寫了

String相關

  • 基本set/get/del/strlen/apppend

  • mset/mget 一行命令同時設定/獲取多個鍵值對

    > mset jo1 dio1 jo2 dio2
    OK
    > mget jo1 jo2
    dio1
    dio2
    
  • incr/incrby/incrbyfloat 設定key增加,減少類似,把in換成de即可

    > set rid 1
    OK
    > incrby rid 5
    6
    > incr rid
    7
    
  • 設定資料的時效性 setex key seconds value / psetex key milliseconds value

  • 資料庫中相關key設定約定,用:分隔(參考),或者不要欄位就存放一個json物件

    表名 主鍵名 主鍵值 欄位名
    user id 1 name

Hash相關

  • 一個key對應一個hash結構,field代表hash的鍵/欄位,value代表hash的

    > hset y_hash k1 v1
    1
    > hget y_hash k1
    v1
    > hset y_hash k2 v2
    1
    > hgetall y_hash
    k1
    v1
    k2
    v2
    
  • hdel key field [field ...] 刪除一個或多個hash 的k-v.

  • hmset ...

    新增/修改多個hash的k-v,hmget ... 獲取多個

  • hlen key獲取k-v數量,hexists key field判斷是否存在某個鍵

  • hkeys key獲取所有鍵,hvals key獲取所有值

  • hincrby key field increment 增加某個值

List相關

  • 資料結構是雙向連結串列,插入刪除效率高,一個key對應一條連結串列,

  • 新增/修改用 lpushrpush,移除並獲取一個用lpop keyrpop key

  • 獲取全部元素lrange key 0 -1,

  • 移除特定元素lrem key count value

    • count > 0 : 從表頭開始向表尾搜尋,移除與 VALUE 相等的元素,數量為 COUNT 。
    • count < 0 : 從表尾開始向表頭搜尋,移除與 VALUE 相等的元素,數量為 COUNT 的絕對值。
    • count = 0 : 移除表中所有與 VALUE 相等的值。
  • 應用場景:展示使用者的關注列表,最新的在最前

set相關

  • set是無序集合,成員不允許重複,hash表實現,各操作複雜度O(1)

  • sadd key member [member ...]增加成員

  • srem key member [member ...]移除成員

  • smembers key獲取所有成員,scard key獲取個數

  • sismember key value 判斷是否包含成員1包含0不包含

  • 應用:隨機推薦,求交集並集什麼的,黑白名單,記錄網站各種訪問資料

    • string來配合incr來統計PV
    • set配合cookie/ip來記錄UV/IP

sorted_set

  • 其他見Redis中文網

  • sorted_set的成員帶有一個score用來排序

  • zadd key score member[score member ...]新增/更新成員

  • zrange key 0 -1 [withscores]獲取資料,低到高,帶引數則帶上score

  • zrevrange key 0 -1 獲取資料從高到低

  • zrem key member [member ...]刪除成員

  • z[rev]rangebyscore key min max [withscores] 獲取指定範圍成員

  • z[rev]rank key member 獲取成員排名(索引)

  • zcard keyzcount key min max獲取成員總量和統計範圍內數量

  • zscore key memberzincrby key increment member修改成員分數

  • 應用:投票,排行榜,活躍度統計,任務/訊息權重應用