Redis五大数据类型的应用场景
Redis五大数据类型的应用场景
快速入门Redis的文章,传送地址:Redis基础知识
文章目录
- Redis五大数据类型的应用场景
- String类型
- Hash类型
- 2.1 购物车
- 2.2 秒杀活动
- List类型
- Set类型
- Zset类型
1. String类型
单值缓存:使用 set、get
指令完成对数据的缓存
对象缓存:value部分使用JSON格式数据进行存储
计数器:使用 incr、decr
指令完成对数据的计数,比如朋友圈点赞数
2. Hash类型
2.1 购物车
使用Hash类型可以完成购物车的添加、浏览、更改数量、删除、清空等操作,如下图所示:
- 以客户id作为key,每位客户创建一个hash存储结构存储对应的购物车信息
创建两个field
- field1用于保存购买数量,格式:
商品编号:数量nums
- field2用于保存购物车中显示的信息,格式:
商品编号:JSON格式的商品信息
- field1用于保存购买数量,格式:
- 添加商品:追加全新的field与value
- 浏览:遍历hash
- 更改数量:自增自减修改field1的value值
- 删除商品:删除两个field
- 清空:删除key
改进方案:
上述设计中,如果不同用户购买同一件商品,仅数量不同,那么就会导致描述信息的大量重复,此时应该考虑将商品的描述信息设置成独立的Hash结构,用户添加商品时如果这个商品存在于独立的Hash结构,那么就无需添加商品的描述信息。
为了保证独立存放商品信息的Hash结构的内容不重复,添加商品时使用 hsetnx
指令。
2.2 秒杀活动
某商家在双十一的活动是,有面值分别为30元、50元、100元的充值卡各有1000张需要售出。
使用Hash结构可完成此次秒杀活动,如下图所示:
- 以商家id作为key
- 将参与抢购的商品id作为field
- 将参与抢购的商品数量作为对应的value
- 抢购时使用降值的方式控制产品数量
注意:对于超卖问题,可以考虑使用分布式锁,详见 博客 / 文档
3. List类型
常用的场景是:
微博关注列表按照好友的关注顺序显示,微信消息的显示列表按照消息到达的先后顺序进行显示
- 可以使用List的栈模型,完成上述两个功能,新来的数据在最上面(栈顶)显示
- 栈模型用来解决最新消息问题
企业中多台服务器的日志打印顺序
- 可以使用List的队列模型,多个服务器按照日志的输出顺序同时记录到队列中
- 队列模型用来解决多路信息归并的问题
4. Set类型
- Set类型主要用于数据不能重复,以及需要获取多个数据源交集、并集的场景
- 比如点赞用户、所有粉丝可以存储在Set中,这些用户不能重复
- 还可以使用Set实现共同关注、共同好友等交集、并集功能
5. Zset类型
- Zset类型通常用来实现排行榜等功能
- 可以按照票数、分数排序,并得到某一数据的排名
还没有评论,来说两句吧...