原创

redis 缓存击穿

温馨提示:
本文最后更新于 2022年06月14日,已超过 675 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

redis 缓存击穿

首先我们来看下请求是如何取到数据的:当接收到用户请求,首先先尝试从Redis缓存中获取到数据,如果缓存中
能取到数据则直接返回结果,当缓存中不存在数据时从DB获取数据,如果数据库成功取到数据,则更新Redis,然后
返回数据

file

定义:高并发的情况下,某个热门key突然过期,导致大量请求在Redis未找到缓存数据,进而全部去访问DB请求
数据,引起DB压力瞬间增大。
解决方案:缓存击穿的情况下一般不容易造成DB的宕机,只是会造成对DB的周期性压力。对缓存击穿的解决方案
一般可以这样:

  1. Redis中的数据不设置过期时间,然后在缓存的对象上添加一个属性标识过期时间,每次获取到数据时,校验对
    象中的过期时间属性,如果数据即将过期,则异步发起一个线程主动更新缓存中的数据。但是这种方案可能会
    导致有些请求会拿到过期的值,就得看业务能否可以接受,
  2. 要求数据必须是新数据,则最好的方案则为热点数据设置为永不过期,然后加一个互斥锁保证缓存的单线
    程写。
正文到此结束
本文目录