Redis五大数据类型的应用场景

Redis五大数据类型的应用场景

快速入门Redis的文章,传送地址:Redis基础知识

1. String类型

单值缓存:使用 set、get 指令完成对数据的缓存

对象缓存:value部分使用JSON格式数据进行存储

计数器:使用 incr、decr 指令完成对数据的计数,比如朋友圈点赞数

2. Hash类型

2.1 购物车

使用Hash类型可以完成购物车的添加、浏览、更改数量、删除、清空等操作,如下图所示:

image-20210606172729844
  • 以客户id作为key,每位客户创建一个hash存储结构存储对应的购物车信息

  • 创建两个field

    • field1用于保存购买数量,格式:商品编号:数量nums
    • field2用于保存购物车中显示的信息,格式:商品编号:JSON格式的商品信息
    image-20210606174023655
  • 添加商品:追加全新的field与value

  • 浏览:遍历hash

  • 更改数量:自增自减修改field1的value值

  • 删除商品:删除两个field

  • 清空:删除key

改进方案:

上述设计中,如果不同用户购买同一件商品,仅数量不同,那么就会导致描述信息的大量重复,此时应该考虑将商品的描述信息设置成独立的Hash结构,用户添加商品时如果这个商品存在于独立的Hash结构,那么就无需添加商品的描述信息。

为了保证独立存放商品信息的Hash结构的内容不重复,添加商品时使用 hsetnx 指令。

2.2 秒杀活动

某商家在双十一的活动是,有面值分别为30元、50元、100元的充值卡各有1000张需要售出。

使用Hash结构可完成此次秒杀活动,如下图所示:

image-20210606175335461
  • 以商家id作为key
  • 将参与抢购的商品id作为field
  • 将参与抢购的商品数量作为对应的value
  • 抢购时使用降值的方式控制产品数量
image-20210606175518869

注意:对于超卖问题,可以考虑使用分布式锁,详见 博客 / 文档

3. List类型

常用的场景是:

  • 微博关注列表按照好友的关注顺序显示,微信消息的显示列表按照消息到达的先后顺序进行显示

    • 可以使用List的模型,完成上述两个功能,新来的数据在最上面(栈顶)显示
    • 模型用来解决最新消息问题
  • 企业中多台服务器的日志打印顺序

    • 可以使用List的队列模型,多个服务器按照日志的输出顺序同时记录到队列中
    • 队列模型用来解决多路信息归并的问题

4. Set类型

  • Set类型主要用于数据不能重复,以及需要获取多个数据源交集、并集的场景
  • 比如点赞用户、所有粉丝可以存储在Set中,这些用户不能重复
  • 还可以使用Set实现共同关注、共同好友等交集、并集功能

5. Zset类型

  • Zset类型通常用来实现排行榜等功能
  • 可以按照票数、分数排序,并得到某一数据的排名
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Nice2cu_Code

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值