redis的缓存雪崩如何解决和预防

什么是雪崩?

首先redis的作用就是在数据访问层在访问数据库的时候,通过一种缓存的手段,去实现通过内存读取数据,在请求数据的时候,首先会在redis中查找,如果redis没有再去数据库中查找,再将查到的数据返回并保存在redis中,之后的查询都会从redis中查


而雪崩就是说如果redis中的数据消失,导致同一时间有一堆请求同时进入数据库,导致数据库崩溃


造成雪崩的常见的场景有:

  1. 当redis的key同时失效,导致请求全部涌入数据库。
  2. redis服务重启导致所有数据丢失。
  3. redsis很稳定,但是如果外在因素导致redis服务关闭,那么也会导致雪崩
  4. 常用的key突然被删除或者失效

雪崩造成的影响:

  1. redis响应是十分快的,当redis出现雪崩会导致所有请求都进入数据库,导致数据库卡顿,本来几毫秒一瞬间就能完成的事情,现在需要几秒甚至更久,体验感非常差
  2. 数据库本来靠着缓存作为缓冲区,如果这个缓存区突然失效,就会导致所有的请求全部涌入数据库,就和三峡大坝一样,靠着三峡大坝来缓冲,拦截水流,如果三峡大坝出现问题,那么可能会导致所有的水,直接将我们淹没

如何预防和解决?

  1. 可以通过随机数设置不同的失效时间
  2. 定期备份数据进行持久化操作
  3. 通过加锁控制访问的数量
相关推荐
菜菜子爱学习28 分钟前
Nginx学习笔记(八)—— Nginx缓存集成
笔记·学习·nginx·缓存·运维开发
魏波.35 分钟前
常用缓存软件分类及详解
缓存
郑州吴彦祖7725 小时前
Spring MVC快速入门
spring·springmvc
Warren985 小时前
MySQL,Redis重点面试题
java·数据库·spring boot·redis·mysql·spring·蓝桥杯
卓码软件测评6 小时前
网站测评-利用缓存机制实现XSS的分步测试方法
java·后端·安全·spring·可用性测试·软件需求
yh云想7 小时前
《多级缓存架构设计与实现全解析》
缓存·junit
寒士obj7 小时前
Bean的生命周期
java·spring
Neo2559 小时前
Spring 5.3.x 源码:基础构建
spring
期待のcode9 小时前
SpringMVC请求与响应
java·后端·spring
寒士obj10 小时前
熟悉并使用Spring框架 - XML篇
xml·java·spring