11-Redis穿透击穿和雪崩
2022/4/26 19:12:51
本文主要是介绍11-Redis穿透击穿和雪崩,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
redis缓存穿透和雪崩
缓存击穿
指的是一个非常热的key 一直有非常大流量的并发访问,当缓存中key失效过期的瞬间,所有的访问量瞬间击破缓存,所有请求瞬间全部访问到数据库,
例: 微博某个热搜,刘畊宏直播,
大量的访问量直接访问到后端数据库 同时数据库还要会写到缓存,导致数据库压力很大甚至崩溃。
决方案:
1.热key缓存永不过期 ,防止缓存过期打到数据库
2.分布式锁:一个线程获取,其他线程等待,防止后端数据库崩溃
缓存穿透
当用户访问一个数据 缓存中没有,缓存没命中,所以向持久层数据库查询
也没有 本次查询失败,但是当大量没用命中访问量都去访问数据库持久层的时候,数据库压力很大 缓存也就失效了 相当于缓存穿透。
例:秒杀活动,双十一 618购物街,短时内大量点击率抢购数量有限的商品,会出现大量查询失败,
解决办法:
1.布隆过滤器 、
2.存储空对象:数据库没找到后,redis中临时存一个空对象(空对象多了也会占用内存)
缓存雪崩
缓存中的key都是有失效时间的 ,缓存雪崩指的是 某个时间点,缓存集体失效,redis缓存失去了作用。
第二种情况是 缓存服务器down机 自然形成了雪崩的情况。
例: 双十一商品 都是提前加载到缓存,到凌晨开始抢购的时候,缓存都过期了了当雪崩的时候没有一片雪花是无辜的,每个key失效都不是问题,但是所有key集体失效,会造成所有的访问直接打到了持久层数据库,数据库访问调用暴增。
解决方案:
1.redis高可用:多设置几台redis
2.限流降级:缓存失效后,通过加锁或者队列来控制读数据库写缓存的数量
3.数据预热:大量数据加载到缓存中,根据不同访问量来设置不同过期时间,防止大面积集体过期
这篇关于11-Redis穿透击穿和雪崩的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-24Redis资料:新手入门快速指南
- 2024-12-24Redis资料:新手入门教程与实践指南
- 2024-12-24Redis资料:新手入门教程与实践指南
- 2024-12-07Redis高并发入门详解
- 2024-12-07Redis缓存入门:新手必读指南
- 2024-12-07Redis缓存入门:新手必读教程
- 2024-12-07Redis入门:新手必备的简单教程
- 2024-12-07Redis入门:新手必读的简单教程
- 2024-12-06Redis入门教程:从安装到基本操作
- 2024-12-06Redis缓存入门教程:轻松掌握缓存技巧