1、Hash
- 举例:电商购物车
1)添加商品->HSET cart:1001 10088 1
2)增加数量->HINCRBY cart:1001 10088 1
3)商品总数->HLEN cart:1001
4)删除商品->HDEL cart:1001 10088
5)获取购物车所有商品-> HGETALL cart:1001
- 优点:
1)同类数据归类整合存储,方便数据管理
2)相比String操作消耗内存与cpu更小
3)相比String存储更节省空间
- 缺点:
1)过期功能不能使用在field上,只能用在key上
2)Redis集群架构下不适合大规模使用(数据热点问题)
2、List
- 实现常用数据结构:
Stack(栈)= LPUSH + LPOP
Queue(队列)= LPUSH + RPOP
Blocking MQ(阻塞队列)= LPUSH +BRPOP
- 举例:微博消息和微信公众号消息(写扩散模式)
1)关注的微博发布消息-> LPUSH msg:1001 10086
2)查看微博最新消息-> LRANGE msg:1001 0 4
3、Set
- 举例:微信抽奖小程序
1)点击参与抽奖加入集合->SADD game 1001
2)查看参与抽奖所有用户->SMEMBER game
3)抽取5名中奖者->SRANDMEMBER game 5 或 SPOP game 5
- 举例:微信微博点赞,收藏,标签
1)点赞->SADD like:10086 1001
2)取消点赞->SREM like:10086 1001
3)检查用户是否点过赞->SISMEMBER like:10086 1001
4)获取点赞的用户列表->SMEMBER like:10086
5)获取点赞用户数->SCARD like:10086
- 举例:好友列表
1)共同关注的好友->SINTER Aset Bset
2)我关注的人也关注他->
SISMEMBER Aset XXX
SISMEMBER Bset XXX
3)我可能认识的人->SDIFF ASet BSet
4、ZSet
- 举例:新闻排行榜
1)点击新闻->ZINCRBY hotNews:20190819 1 守护香港
2)展示当日排行榜前十(递减排序)->ZREVRANGE hotNews:20190819 0 9 WITHSCORES
3)七日搜索榜单计算->ZUNIONSTORE hotNews:20190813-20190819 7 hotNews:20190813 hotNews:20190814 ... hotNews:20190819
4)展示七日排行前十->ZREVRANGE hotNews:20190813-hotNews:20190819 0 9 WITHSCORES