redis 缓存击穿
温馨提示:
本文最后更新于 2022年06月14日,已超过 354 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我。
redis 缓存击穿
首先我们来看下请求是如何取到数据的:当接收到用户请求,首先先尝试从Redis缓存中获取到数据,如果缓存中
能取到数据则直接返回结果,当缓存中不存在数据时从DB获取数据,如果数据库成功取到数据,则更新Redis,然后
返回数据
定义:高并发的情况下,某个热门key突然过期,导致大量请求在Redis未找到缓存数据,进而全部去访问DB请求
数据,引起DB压力瞬间增大。
解决方案:缓存击穿的情况下一般不容易造成DB的宕机,只是会造成对DB的周期性压力。对缓存击穿的解决方案
一般可以这样:
- Redis中的数据不设置过期时间,然后在缓存的对象上添加一个属性标识过期时间,每次获取到数据时,校验对
象中的过期时间属性,如果数据即将过期,则异步发起一个线程主动更新缓存中的数据。但是这种方案可能会
导致有些请求会拿到过期的值,就得看业务能否可以接受, - 要求数据必须是新数据,则最好的方案则为热点数据设置为永不过期,然后加一个互斥锁保证缓存的单线
程写。
正文到此结束
- 本文标签: redis
- 本文链接: https://blog.wangqi2020.top/article/30
- 版权声明: 本文由王祁原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权