redis 缓存引发的头疼问题

缓存穿透
某个key缓存没有,数据库也没有。一般这种情况发生了用户恶意请求或者攻击。造成一直不停查库

解决方案
最顶层拦截,不合理的id直接打回去或者布隆过滤器
db如果差不多,设置个null进Redis,这样下次就不会打到db,但是要注意合理的过期时间。


缓存雪崩
大批量不同的key同一时间到期,造成缓存失效,请求压到数据库。
解决方案
没有很好的办法,设置key的时候注意错开过期时间,有些热点数据甚至可以设置不过期


缓存击穿
某个key缓存过期,但是数据库有。正好这个点请求并发超高,还没来的及写缓存都压到了数据库上。

解决方案
加锁!第一个请求来时,如果发现为空,加锁住让后面的请求等待一下,参考多线程单例模式


分布式缓存的效率问题
分布式缓存需要经过网络传输,既然有网络,必然会有性能损耗,

 

posted @ 2023-01-26 23:20  沐雪架构师  阅读(20)  评论(0编辑  收藏  举报