MICUU
微资讯
声卡
创新2024全套教程
5.1声卡全套
创新声卡驱动
板载声卡调试全套教程
Sam机架安装
Sam机架
音效助手
专题
文档
技术文档汇总
站内文档
更多
软件
更新日志
关于
装机必备
Gramos模板
光年后台模板
Betube模板
美图
友情链接
站内导航
关于
搜索
退出登录
登录
1
PHP面试需要准备的基础知识
2
[面试]关于高并发处理的一些整理
3
2020前端面试题实战分享
4
PHP面试需要具备的技能
5
php2021年面试题准备
6
2021年春季PHP面试题总结汇总
7
2021年春季PHP面试题总结汇总-无答案版
8
2021PHP中高級面试题整理
9
2021高级面试题分享
10
2022年高级程序开发面试题
11
缓存穿透、缓存击穿、缓存雪崩-面试题小结
12
2022年PHP高级面试题整理-持续更新中
13
PHP面试题
原创
缓存穿透、缓存击穿、缓存雪崩-面试题小结
2022-02-23
74.91w热度
**缓存穿透** 穿透:访问一个不存在的 key,缓存不起作用,请求会穿透到 DB,流量大时 DB 会挂掉。 解决方案: (1)对查询结果为空的情况也进行缓存,缓存时间设置短一点,或者该 key 对应的数据 insert 之后再清理缓存。 (2)单独过滤处理。对所有可能对应数据为空的key进行统一的存放,并在请求前做拦截,这样避免请求穿透到后端数据库。 **缓存击穿** 某个 key 非常热点,访问非常频繁,处于集中式高并发访问的情况,当这个 key 在失效的瞬间,大量的请求就击穿了缓存,直接请求数据库,就像是在一道屏障上凿开了一个洞。 解决方案: (1)感知到缓存失效,去查询 DB 时,使用分布式锁,使得只有一个线程去数据库加载数据,加锁失败的线程,等待即可。 (2)手动过期:redis 上从不设置过期时间,或将过期时间存在 key 对应的 value 里,如果发现要过期,通过一个后台的异步线程进行缓存的构建,这样保证key一直未失效。 **缓存雪崩** 对于系统 A,假设每天高峰期每秒 5000 个请求,本来缓存在高峰期可以扛住每秒 4000 个请求,但是缓存机器意外发生了全盘宕机。缓存挂了,此时 1 秒 5000 个请求全部落数据库,数据库必然扛不住,它会报一下警,然后就挂了。此时,如果没有采用什么特别的方案来处理这个故障,就算重启数据库,但是数据库立马又被新的流量给打死了。 解决方案: (1)不同的 key,设置不同的过期时间,让缓存失效的时间点尽量均匀。 (2)做二级缓存,A1 为原始缓存,A2为拷贝缓存,A1 失效时,可以访问 A2,A1 缓存失效时间设置为短期,A2 设置为长期(此点为补充)
注:原创不易,转载请注明出处(
https://micuu.com/new/2619.html?special=2717
),本站所有资源来源于网络收集,如有侵权请联系QQ245557979进行清除。
最后修改与 2022-02-23
上一篇:
form表单序列化之后追加字段
下一篇:
字节跳动员工猝死有感
留言反馈
请先登录
问题反馈渠道,如有软件无法下载或者其他问题可反馈。【由于某种原因,目前留言不展示】
用户需要登录后才能留言反馈
立即留言