一、String應用場景
單值緩存
set key value
對象緩存
mset k1 v1 k2 v2
mget k1 k2
分佈式鎖
setnx k1 v1
set k1 v1 ex 10 nx 放置意外終止
計數器
incr key
Web集羣Session共享
分佈式ID
incrby key 100
二、Hash 應用場景
對象緩存
hmset user 3:name mawenbo 3:age 32 3:email [email protected]
hmget use 3:name 3:age 3:email
HMSET 不宜存儲BigKey及BigValue。如果數據量太大,可採用分段存儲。比如User數據量太大,將User進行拆分,Hash分開存儲User0,User1,User2,User3......
電商購物車
hset jeuc:100001 goodsId_10002 1
hincrby jeuc:100001 goodsId_10002 1
hgetall jeuc:100001
優點:
同類數據歸併整合存儲,方便數據管理
相比String操作小號內存與CPU更小
相比String存儲更節省空間。
缺點:
過期功能不能使用在filed,只能使用在key上
Redis集羣架構下不適合大規模存儲。
三、List 應用場景
棧:Stack = LPUSH + LPOP
隊列: LPUSH + RPOP
阻塞隊列: LPUSH + BRPOP
微信和微博公衆號信息流
四、Set 應用場景
微信抽獎小程序
SADD Key {userID}
SMEMBERS key 獲取所有
SRANDMEMBER KEY [count] 從集合中隨機選出count個元素,元素不從key中刪除
SPOP KEY [count] 從集合中隨機選出count個元素,元素從key中刪除
微信微博點贊,收藏,標籤
1)點贊
SADD like:{消息Id} {用戶ID}
2)取消點贊
SREM like:{消息Id} {用戶ID}
3)檢查用戶是否點過贊
SISMEMBER like:{消息ID} {用戶ID}
4)獲取點讚的用戶列表
SMEMBERS like:{消息ID}
5)獲取點贊用戶數
SCARD like:{消息ID}
集合操作微博微信關注模型
五、ZSet 應用場景