一、缓存穿透
概念:查询一个db一定不存在的数据,因为如果db查不到的话就不会缓存,这样每次从缓存都查不到,所以每次都得去db查。
解决方案:1、布隆过滤器,准备一个足够大的bitmap存储db查不到的数据
2、如果数据库查不到,则也缓存,值为空,并且缓存过期时间设置的短一点。
二、缓存雪崩
概念:由于缓存的数据过期时间设置的一样(很多key),所以会导致某一刻,大量的缓存数据过期然后去查db,db的压力一下子增大。
解决方案:1、设置不一样的过期时间
三、缓存击穿
概念:某个热点数据(某一个key),由于缓存过期,一下子全部去查db。
解决方案:1、只查一次db,共享这次查到的数据。这是我自己对次方案的代码实现:。
网友评论