关注
1.1 什么是缓存雪崩:
那我们为什么要用缓存(Redis):
1、提高性能能:缓存查询是纯内存访问,而硬盘是磁盘访问,因此缓存查询速度比数据库查询速度快
2、提高并发能力:缓存分组了部分请求,支持更高的并发
现在有个问题,如果我们的缓存挂掉了,这意味着我们的全部请求都跑去数据库了。
我们都知道Redis不可能把所有的数据都缓存起来(内存昂贵且有限),所以Redis需要对数据设置过期时间,将已经过期的键值对删除,它采用的是惰性删除+定期删除两种策略对过期键删除。
如果缓存数据设置的过期时间是相同的,并且Redis恰好将这部分数据全部删光了。这就会导致在这段时间内,这些缓存同时失效,全部请求到数据库中。
这就是缓存雪崩:
Redis挂掉了,请求全部走数据库。
对缓存数据设置相同的过期时间,导致某段时间内缓存失效,请求全部走数据库。
缓存雪崩如果发生了,很可能就把我们的数据库搞垮,导致整个服务瘫痪!
1.2 如何解决缓存雪崩:
对于“对缓存数据设置相同的过期时间,导致某段时间内缓存失效,请求全部走数据库。”这种情况,非常好解决:
解决方法:在缓存的时候给过期时间加上一个随机值,这样就会大幅度的减少缓存在同一时间过期。
对于“Redis挂掉了,请求全部走数据库”这种情况,我们可以有以下的思路:
事发前:实现Redis的高可用(主从架构+Sentinel 或者Redis Cluster),尽量避免Redis挂掉这种情况发生。
事发中:万一Redis真的挂了,我们可以设置本地缓存(ehcache)+限流(hystrix),尽量避免我们的数据库***掉(起码能保证我们的服务还是能正常工作的)
事发后:redis持久化,重启后自动从磁盘上加载数据,快速恢复缓存数据。
查看原帖
1 评论
相关推荐
牛客热帖
更多
正在热议
更多
# 2025年终总结 #
123219次浏览 2071人参与
# 实习简历求拷打 #
15998次浏览 185人参与
# 作业帮求职进展汇总 #
83842次浏览 552人参与
# 秋招被挂春招仍然能投的公司 #
7583次浏览 104人参与
# 实习要如何选择和准备? #
128522次浏览 1486人参与
# 外包能不能当跳板? #
54254次浏览 256人参与
# 诺瓦星云求职进展汇总 #
233487次浏览 1736人参与
# mt对你说过最有启发的一句话 #
38688次浏览 454人参与
# 公司情报交流地 #
126633次浏览 1227人参与
# 为了找工作你花了哪些钱? #
74869次浏览 361人参与
# 你觉得机械有必要实习吗 #
69773次浏览 485人参与
# 投格力的你,拿到offer了吗? #
153305次浏览 820人参与
# 一起聊美团 #
307569次浏览 1766人参与
# 什么是优秀的实习经历 #
9238次浏览 226人参与
# 摸鱼被leader发现了怎么办 #
103530次浏览 659人参与
# 京东开奖 #
631974次浏览 3180人参与
# 秋招特别不鸣谢 #
16490次浏览 186人参与
# 考研失败就一定是坏事吗? #
202388次浏览 1384人参与
# 选实习,你更看重哪方面? #
15093次浏览 229人参与
# 安克创新求职进展汇总 #
62461次浏览 541人参与
