Redis 搞懂缓存击穿、缓存穿透、缓存雪崩 产生原因及产线常用的解决方案
2023-06-13 09:16:08 时间
B站(乐哥聊编程)有完整配套视频,免费观看
缓存击穿
原因
指某些热点key到达了过期的那个时间点,这个时候刚好有大量的并发请求需要查询这个key,从而导致并发请求直接打到了数据库,这就是缓存击穿。
解决方案
- 提前将热门数据放入redis缓存
- 对热门key进行监控,定期进行续期
- 对不同级别的key设置不同的缓存时间
- 设置分布式锁
缓存穿透
原因
这个是恶意攻击导致的,黑客通过伪造非法的id,查询数据库中不存在的key,导致经过redis缓存时:判断key不存在,则直接查DB,最终导致所有请求全部达到了DB中,造成缓存穿透
解决方案
- 缓存一个特定的值,代表数据库中不存在,如 空值
- 使用Redis布隆过滤器:如果不存在那就一定不存在,如果存在但是不一定存在
- 设置有规律的id,如果不满足规则条件则拦截
缓存雪崩
原因1:
大量key同时过期,导致所有请求全部打到DB中
解决方案1
- 缓存时间最好不要设置一样,可以上下波动一个阈值
- 服务降级
原因2
缓存中间件直接宕机
解决方案2
- 限流
- 熔断
- 建立高可用缓存集群
相关文章
- Redis命名规则:轻松拾取关键字(redis命名规则)
- 使用Redis统计大数据分析变得更简单(redis做统计)
- Redis参数深度解析(redis参数详解)
- 红色的Redis:实时在线聊天(redis在线聊天)
- 强大的Redis:灵活的内存数据库之旅(redis内存数据库)
- 高效构建Redis缓存集群,实现轻松管理(redis缓存集群管理)
- 玩转Redis:使用它替代SQL查询(redis实现sql查询)
- Redis: 极速高效的数据缓存解决方案(redis的优势)
- 用Redis作为PHP缓存:提高性能和效率(php中redis做缓存)
- 集群从零开始构建Redis集群实践指南(怎么构建一个redis)
- Memcached使用Redis进行高效缓存管理(缓存 redis 类似)
- 深入Redis使用密码登录(登录带密码的redis)
- 原来爬虫是用Redis才行(爬虫为什么用redis)
- 易语言连接Redis池把Redis的便利带进应用(易语言redis池)
- 利用Redis攻击模式调查安全设计中的新挑战(利用redis攻击)
- 如何压力测试Redis与性能提升(如何压测redis)
- Redis集群轻松实现快速部署(redis集群简单部署)
- Redis集群中Key数量的管理(redis集群key数量)
- 利用Redis设置更高效的相同值(redis设置相同的值)
- 利用Redis简化数据设置(redis 设置raw)
- Redis缓存穿透与血崩之间的防御手段(redis缓存穿透和血崩)
- 极速体验Redis缓存加速商城项目(redis缓存商城项目)