面试被吊打系列 - Redis缓存雪崩 不念不忘少年蓝@ 2023-01-03 15:26 149阅读 0赞 ![format_png][] > 小张兴冲冲去面试,结果因为redis的缓存雪崩问题被面试官拒绝! 小张:面试官,你好。我是来参加面试的。 面试官:你好,小张。我看了你的简历,你们平时在项目中用了redis,能说一下你们使用redis的场景吗? 小张:redis的话我们主要是用来存储一些常用的配置类数据还有一些热点数据;还有存储一些到期失效的数据,比如登录用户颁发的token等。 面试官:那好,既然你们用来存储热点数据。那么我来问你个实际场景,**「查询热点数据的时候会先从缓存加载,如果缓存没有命中则会检索数据库获取数据。往往我们还会给热点缓存数据设置一个过期时间。那么我的问题是,假设在某一时间点热点缓存全部过期失效了,这样所有的请求都会直接进入数据库,一瞬间就会把数据库压垮,如果是你会怎么解决这个问题?」** 小张:emm...面试官,我肚子有点不舒服,我先回去了。小张卒! 面试官:因为缓存同一时间大面积的失效,或者缓存服务暂时不能提供服务等,从而导致所有请求都去查数据库,导致数据库CPU和内存负载过高,甚至宕机。这一现象被称之为 **「缓存雪崩」**。 ![format_png 1][] 缓存雪崩可以通过以下四个维度来解决: * **「缓存预热」** 数据加热的含义就是在正式部署之前,先把可能的数据先预先访问一遍,这样部分可能大量访问的数据就会加载到缓存中。在即将发生大并发访问前手动触发加载缓存不同的key。 * **「加上互斥锁」** 可以在第一个查询数据的请求上使用一个互斥锁来锁住它,其他的线程走到这一步拿不到锁就等着,等第一个线程查询到了数据,然后将数据放到redis缓存起来。后面的线程进来发现已经有缓存了,就直接走缓存。 * **「过期时间均匀分布」** 给缓存的时效时间加上随机因子,即给缓存设置不同的过期时间,让缓存失效的时间点尽量均匀。 * **「构建高可用的缓存系统」** 把Redis设计成高可用的,即使个别节点、个别机器、甚至是机房宕掉,依然可以提供服务,例如 Redis Sentinel 和 Redis Cluster 都实现了高可用。 面试官:各位看官朋友们,你们学会怎么解决缓存雪崩的问题了吗?希望你们以后面试不会被这个问题难倒哟~ 小张:学到了学到了,我下次再来。(早知道不提什么热点数据了,不提面试官就不会问。) 面试官:小样,不问这个那么我不会问其他的了吗?你下次再来试试! End 干货分享 这里为大家准备了一份小小的礼物,关注公众号,输入如下代码,即可获得百度网盘地址,无套路领取! 001:《程序员必读书籍》 002:《从无到有搭建中小型互联网公司后台服务架构与运维架构》 003:《互联网企业高并发解决方案》 004:《互联网架构教学视频》 006:《SpringBoot实现点餐系统》 007:《SpringSecurity实战视频》 008:《Hadoop实战教学视频》 009:《腾讯2019Techo开发者大会PPT》 010: 微信交流群 近期热文top 1、[关于JWT Token 自动续期的解决方案][JWT Token] [2、SpringBoot开发秘籍-事件异步处理][2_SpringBoot_-] [3、架构师之路-服务器硬件扫盲][3_-] [4、基于Prometheus和Grafana的监控平台 - 环境搭建][4_Prometheus_Grafana_ -] [5、RocketMQ进阶 - 事务消息][5_RocketMQ_-] ![format_png 2][] 我就知道你“在看” ![format_png 3][] [format_png]: /images/20221119/395a06c9b8e74684b1b81e7aab675397.png [format_png 1]: /images/20221119/3b6e6b02744d4e868d9aa9751c2bcbea.png [JWT Token]: http://mp.weixin.qq.com/s?__biz=MzAwMTk4NjM1MA%3D%3D&chksm=9ad01e39ada7972f6876967c5056be292429a4a16ef8b6c0ebdee48b7952718437b449856df3&idx=1&mid=2247484536&scene=21&sn=1b93b86e1fe8ca7ac36475bdd65fcaf8#wechat_redirect [2_SpringBoot_-]: http://mp.weixin.qq.com/s?__biz=MzAwMTk4NjM1MA%3D%3D&chksm=9ad01d1cada7940a7cd4b14835f2ee16355a277e6fffaacdc3db6a002f1daebc8ee737c35ae6&idx=1&mid=2247485277&scene=21&sn=dc5f5f1c21af424bbbe6ac48ca21d22e#wechat_redirect [3_-]: http://mp.weixin.qq.com/s?__biz=MzAwMTk4NjM1MA%3D%3D&chksm=9ad01cb4ada795a28eb720226b67fb8944c8430b6f5e76db43bc032cf994e49d8a1eb7563de5&idx=1&mid=2247485173&scene=21&sn=ff7813297c09ee0f7ea1534d53ad7715#wechat_redirect [4_Prometheus_Grafana_ -]: http://mp.weixin.qq.com/s?__biz=MzAwMTk4NjM1MA%3D%3D&chksm=9ad011f7ada798e1bc4008949a3e71c780eb9ae22d32c8e0390321f4ced4e40515e078d44c33&idx=1&mid=2247486390&scene=21&sn=160ab78676c44bf2ca9a59eb89d38f0b#wechat_redirect [5_RocketMQ_-]: http://mp.weixin.qq.com/s?__biz=MzAwMTk4NjM1MA%3D%3D&chksm=9ad01e56ada797400a12c959bacb080c7ad8ed11ed7454b8c64b531b86394811938896185295&idx=1&mid=2247484439&scene=21&sn=fb233c2ab321afee25c207799b9e4477#wechat_redirect [format_png 2]: /images/20221119/b4b9d17980f04929bb5a90a6936f2d8c.png [format_png 3]: /images/20221119/6998aef3df414e878e7a137f9d1a5d73.png
还没有评论,来说两句吧...