Redis在京东到家的订单中的使用

本文介绍了Redis在京东到家订单列表中的使用,包括订单数据的存储结构(使用有序集合)、Redis与数据库的一致性保证策略、分布式锁的实现及防止缓存穿透和雪崩的方法。通过优化存储和更新策略,确保了系统的稳定性和效率。
摘要由CSDN通过智能技术生成


背景

Redis作为一款性能优异的内存数据库,在互联网公司有着多种应用场景,下面介绍下Redis在京东到家的订单列表中的使用场景。主要从以下几个方面来介绍:

  1. 订单列表在Redis中的存储结构
  2. Redis和DB数据一致性保证
  3. Redis中的分布式锁
  4. 缓存防穿透和雪崩

订单列表在Redis中的存储结构

  • 订单列表数据在缓存中,是以用户的唯一标识作为键,以一个按下单时间倒序的有序集合为值进行存储的。大家都知道Redis的sorted set中每个元素都有一个分数,Redis就是根据这个分数排序的。订单有序集合中的每个元素是将时间毫秒数+订单号最后3位作为分数进行排序的。为什么不只用毫秒数作为分数呢?因为我们的下单时间只精确到秒,如果不加订单号最后3位,若同一秒有两个或两个以上订单时,排序分数就会一样,从而导致根据分数从缓存查询订单时不能保证唯一性。而我们的订单号的生成规则可以保证同一秒内的订单号的最后3位肯定不一样,从而可以解决上述问题。
  • 有必要将一个用户的所有订单都放入缓存吗?针对用户订单是没有必要的,因为很少有用户去看很久以前的历史订单。真正的热点数据其实也就是最近下过的一些订单,所以,为了节省内存空间,只需要存放一个用户最近下过的N条订单就行了,这个N,相当于一个阀值,超过了这个阀值,再从数据库中查询订单数据,当然,这部分查库操作已经是很小概率的操作了。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值