1. 程式人生 > 資料庫 >redis使用場景

redis使用場景

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