缓存穿透:访问的数据缓存找不到,一直转而发送到数据库 解决方案:设置空值缓存,设置白名单,实时监控,通过bitmap的位运算进行存储。
缓存击穿:key对应的数据存在,但在redis中过期,此时若有大量并发请求过来,这些请求发现缓存过期一般都会从后端DB加载数据并回设到缓存,这个时候大并发的请求可能会瞬间把后端DB压垮。也就是一个key过期,一直访问数据库
解决方案1)预先设置热门数据:在redis高峰访问之前,把一些热门数据提前存入到redis里面,加大这些热门数据key的时长
(2)实时调整:现场监控哪些数据热门,实时调整key的过期时长
(3)使用锁:先判断值是否为空再让他进来与否
缓存雪崩:设置多个级别的缓存架构,时间来得及缓冲、使用锁的机制、设置一个过期时间标志来通知、将过期时间分散,比如5分钟、5.01分钟等