缓存雪崩 & 缓存穿透
2023-09-14 09:07:20 时间
缓存雪崩 & 缓存穿透
缓存雪崩 & 缓存穿透.png
缓存流程
1.参数传入对象主键ID
2.根据key从缓存中获取对象
3.如果对象不为空,直接返回
4.如果对象为空,查询数据库
5.如果从数据库查询出的对象不为空,则放入缓存(设定过期时间)
缓存雪崩
如果我们的缓存挂掉了,这意味着我们的全部请求都跑去数据库了。
如果缓存数据设置的过期时间是相同的,并且Redis恰好将这部分数据全部删掉。
这就会导致在这段时间内,这些缓存同时失效,全部请求到数据库中。
缓存挂掉解决方案
-
事发前
- 主从架构+Sentinel
- Cluster
- 分布式缓存架构
- 设置过期标志更新缓存
- 使用锁或队列
- 二级缓存
-
事发中
- 设置本地缓存(ehcache)+限流(hystrix)
-
事发后
- 缓存持久化,重启后自动从磁盘上加载数据,快速恢复缓存数据
缓存过期时间集中解决方案
相关文章
- 由"缓存"到"Memcached分布式缓存"
- 《转载》Linux服务之搭建FTP服务器&&分布式文件服务器的比较
- Ubuntu安装配置串口通讯工具minicom&&cutecom
- [RSpec] LEVEL 2 CONFIGURATION & MATCHERS
- 华为OD机试 - 区块链文件转储系统(Java & JS & Python)
- 华为OD机试 - 计算最大乘积(Java & JS & Python)
- 从零开始学_JavaScript_系列(15)——js系列<3>(转为字符串,截取字符串)
- HDU 5371 (2015多校联合训练赛第七场1003)Hotaru's problem(manacher+二分/枚举)
- 操作系统中的任务调度 & CPU 内存缓存一致性问题
- 【SQL开发实战技巧】系列(四):从执行计划讨论UNION ALL与空字符串&UNION与OR的使用注意事项
- RabbitMQ之Consumer消费模式(Push & Pull)
- 牛顿法求方程的根(C&Matlab&Python语言实现)
- Java8中计算时间的四种方式及区别Period、Duration、ChronoUnit、Until & 时间区间Duration的简单使用