Java面试题 P16:Redis篇:Redis使用场景-缓存-缓存穿透
缓存涉及问题:
1、缓存三兄弟:穿透 击穿 雪崩
2、双写一致
3、持久化
4、数据过期策略
5、数据淘汰策略
如果发生了缓存穿透,击穿,雪崩,该如何解决?
1、缓存穿透
什么是缓存穿透,当查询一个不存在的数据,查redis中没有,mysql查询也没有,数据也不会直接写入到redis,就导致每次都要请求数据库,遇到被恶意攻击时访问量增大,会有大量这样不存在的请求访问数据库导致数据库宕机。
(1)方案一:缓存空数据,查询返回的数据为空时,仍把这个空结果进行缓存,例如key:1,value:null
(2)方案二:布隆过滤器,请求redis前增加布隆过滤器