假设有如下一个系统,高峰期请求为5000次/秒,4000次走了缓存,只有1000次落到了数据库上,数据库每秒1000的并发是一个正常的指标,完全可以正常工作,但如果缓存宕机了,每秒5000次的请求会全部落到数据库上,数据库立马就死掉了,因为数据库一秒最多抗2000个请求,如果DBA重启数据库,立马又会被新的请求打死了,这就是缓存雪崩 。
文章插图
如何解决缓存雪崩
事前:redis高可用,主从+哨兵,redis cluster,避免全盘崩溃
事中:本地ehcache缓存 + hystrix限流&降级,避免MySQL被打死
事后:redis持久化,快速恢复缓存数据
缓存穿透是什么?
假如客户端每秒发送5000个请求,其中4000个为黑客的恶意攻击,即在数据库中也查不到 。举个例子,用户id为正数,黑客构造的用户id为负数,
如果黑客每秒一直发送这4000个请求,缓存就不起作用,数据库也很快被打死 。
文章插图
如何解决缓存穿透
查询不到的数据也放到缓存,value为空,如set -999 “”
总而言之,缓存雪崩就是缓存失效,请求全部全部打到数据库,数据库瞬间被打死 。缓存穿透就是查询了一个一定不存在的数据,并且从存储层查不到的数据没有写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义
推荐阅读
- 高卫忠,紫砂传人 出手不凡纳新意
- 一个老程序员的忠告:千万不要一辈子靠技术生存
- 衣服被小雨淋一点点用洗吗 床单淋了几滴雨要不要洗
- 网站页面过长会不会导致不收录
- 淘宝直播间亲密度怎么一天可以涨500 为什么淘宝直播加购不加亲密度
- 乳房结节疼好还是不好?
- 坐月子不能刷牙吗
- 日本|肝不动了?日本设计师制作“肝”字形座椅:竟然有妙用
- 钻石洁具怎么样 钻石洁具好不好
- 梦见刹车刹不住是什么意思 梦见车子刹车刹不住最后刹住