一、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 732648796@qq.com
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 应用场景