redis使用場景
阿新 • • 發佈:2020-01-27
String應用場景
#單值快取 set key value get key # 物件快取 set object '{"name":"ws","age":"18"}' get object mset object:name ws object:age 18 mget object:name object:age # 分散式鎖 setnx key true //返回1代表成功,0代表失敗 ...執行業務邏輯 del key //執行完成釋放鎖 set key value ex seconds nx //防止程式意外終止導致死鎖 # 計數器 incr key get key # Web叢集session共享 redis儲存sessionId及資訊實現session共享 # 分散式全域性序列號 incrby key increment
Hash應用場景
一般物件用string + json儲存,物件中某些頻繁變化的屬性抽出來用hash儲存,比如電商購物車就可以用hash實現
# 模型設計
使用者ID為key
商品ID為field
數量為value
# 購物車常用操作
新增商品
hset userid productid 1
刪除商品
hdel userid productid
增加數量
hincrby userid productid 1
減小數量
hincrby userid productid -1
獲取單個商品數量
hget userid productid
獲取購物車商品數量
hlen userid
List應用場景
list可以實現的資料結構
# list實現棧stack
lpush+lpop
#list實現佇列queue
lpush+rpop
#list實現阻塞佇列Blocking MQ
lpush+brpop
資訊流
# 使用者ID為userid 訂閱的公眾號資訊編號為msgid
# 公眾號釋出資訊
lpush msg:userid msgid
# 使用者重新整理獲取資訊數及id
llen msg:userid
lrange msg:userid start stop
Set應用場景
黑名單/白名單
set型別儲存這些黑名單資料, sismember命令可用於判斷使用者、ip、裝置是否處於黑名單之中。
共同關注、感興趣的人、點贊、簽到
可以通過set集合運算實現
隨機展示、抽獎
srandmember可以實現
Zset應用場景
排行榜
# 存入使用者及對應分數
zadd ranking 10 user1
...
# 取分數最高的n個使用者
zrevrange ranking 0 n withscores