首页 > 数据库 >Redis缓存雪崩

Redis缓存雪崩

时间:2023-03-02 11:04:15浏览次数:43  
标签:缓存 过期 Redis 并发 雪崩 key 失效

问题描述:

key对应的数据存在,但在redis中过期,此时若有大量并发请求过来,这些请求发现缓存过期一般都会从后端DB加载数据并回设到缓存,这个时候大并发的请求可能会瞬间把后端DB压垮。

缓存雪崩与缓存击穿的区别在于这里针对很多key缓存,后者则是某一个key

正常访问

 

缓存失效瞬间

 

解决方案

缓存失效时的雪崩效应对底层系统的冲击非常可怕!

解决方案:

(1)   构建多级缓存架构:nginx缓存 + redis缓存 +其他缓存(ehcache等)

(2)   使用锁或队列:

用加锁或者队列的方式保证来保证不会有大量的线程对数据库一次性进行读写,从而避免失效时大量的并发请求落到底层存储系统上。不适用高并发情况

(3)   设置过期标志更新缓存:

记录缓存数据是否过期(设置提前量),如果过期会触发通知另外的线程在后台去更新实际key的缓存。

(4)   将缓存失效时间分散开:

比如我们可以在原有的失效时间基础上增加一个随机值,比如1-5分钟随机,这样每一个缓存的过期时间的重复率就会降低,就很难引发集体失效的事件。

 

标签:缓存,过期,Redis,并发,雪崩,key,失效
From: https://www.cnblogs.com/Spepsi24/p/17171031.html

相关文章

  • springCache整合redis详细讲解和配置
    SpringCache的简介缓存,就是将数据从数据库等数据来源获取数据,将数据缓存在内存或其他设备如Redis中,为了二次查询能够快速高效的响应结果.SpringCache是3.1开始提供,......
  • Redis哨兵模式
    含义反客为主的自动版,检测主服务器是否宕机,如果宕机后会立即选择一个主服务器下的从服务器再当选主服务器  操作步骤1. 配置哨兵,填写内容自定义的/myredis目录下......
  • Redis薪火相传
    1.1.1.   薪火相传上一个Slave可以是下一个slave的Master,Slave同样可以接收其他slaves的连接和同步请求,那么该slave作为了链条中下一个的master,可以有效减轻master......
  • Redis反客为主
    当一个master宕机后,后面的slave可以立刻升为master,其后面的slave不用做任何修改。用slaveof noone 将从机变为主机。  ......
  • Mybatis二级缓存(2)
    10.3.一级缓存的原理          10.3.3一级缓存的测试  ......
  • Mybatis二级缓存(1)
            ......
  • node redis 在服务端使用踩坑
    测试环境正常,生产环境不能正常访问1、测试环境和生产环境不同的是配置的redis不一样,难道是因为redis吗? 类似issue:https://github.com/luin/ioredis/issues?q=++Err......
  • 缓存穿透、缓存击穿、缓存雪崩,以及这些问题的常用解决方法。
    转载自:一文读懂缓存穿透、缓存击穿、缓存雪崩及其解决方法  在介绍这三大问题之前,我们需要先了解Redis作为一个缓存中间件,在项目中是如何工作的。首先看一下在没......
  • redis有关面试题1
    redis的特点:redis本质上是一个key-value类型的内存数据库,整个数据库系统加载在内存当中操作,定期通过异步操作把数据库数据flash硬盘上进行保存。因为是纯内存操作,redi......
  • Redis中的缓存穿透、雪崩、击穿的原因以及解决方案
    一、概述①缓存穿透:大量请求根本不存在的key(下文详解)②缓存雪崩:redis中大量key集体过期(下文详解)③缓存击穿:redis中一个热点key过期(大量用户访问该热点key,但是热点key......