# 《Seckill秒杀系统》第33章:活动详情混合型缓存设计与实现

作者:冰河
星球:http://m6z.cn/6aeFbs (opens new window)
博客:https://binghe.gitcode.host (opens new window)
文章汇总:https://binghe.gitcode.host/md/all/all.html (opens new window)
源码获取地址:https://t.zsxq.com/0dhvFs5oR (opens new window)
课程视频:https://t.zsxq.com/13f6qGGf7 (opens new window)

沉淀,成长,突破,帮助他人,成就自我。

  • 本章难度:★★★☆☆
  • 本章重点:秒杀活动详情实现混合型缓存设计与开发,掌握高并发场景下的缓存实现方案,重点了解并掌握如何有效避免缓存击穿、缓存穿透和缓存雪崩的方案。
  • 课程视频:https://t.zsxq.com/13f6qGGf7 (opens new window)

大家好,我是冰河~~

用户在参与秒杀活动时,需要进入秒杀活动详情,查看参与当前秒杀活动的商品列表,选择自己心仪的商品进行抢购,在秒杀活动开始前,会有大量用户进入对应的秒杀活动。

# 一、前言

秒杀活动开始前,会有大量用户进入对应的秒杀活动详情,查看参与秒杀活动的商品列表,此时会对秒杀活动详情接口产生较大的流量压力。为了系统的稳定性,同样需要对秒杀活动详情接口进行精心的缓存设计。

# 二、本章诉求

对秒杀活动详情接口进行本地缓存+分布式缓存的混合型缓存设计与实现,在访问秒杀活动详情接口时,优先从本地缓存获取数据,如果本地缓存不存在具体的业务数据,则从分布式缓存中获取数据,并且同一时刻只能有一个线程更新本地缓存数据。如果从分布式缓存获取数据时,分布式缓存中不存在具体的业务数据,则此时同一时刻只能有一个线程访问数据库,查询到业务数据后,将数据更新到缓存中。其他没有获取到访问数据库机会的线程,快速返回,不占用系统资源。

# 三、混合型缓存设计

实现秒杀活动详情的混合型缓存时,同样需要重点考虑并避免缓存击穿、穿透和雪崩的问题,因此,在秒杀活动详情接口的混合型缓存的设计上,同样需要对混合型缓存的执行流程进行精心的设计。本节,就对秒杀活动详情混合型缓存的流程设计和和类结构设计进行简单的介绍。

# 3.1 流程设计

关于活动详情混合型缓存的执行流程如图33-1所示。


整体流程如下所示。

(1)获取秒杀活动详情数据时,先获取本地缓存数据。

(2)如果本地缓存存在数据,则执行第(3)步,否则执行第(5)步。

# 查看完整文章

加入冰河技术 (opens new window)知识星球,解锁完整技术文章与完整代码