缓存雪崩:
定义:
缓存服务器重启或者大量缓存集中在某一个时间段内失效。
解决方法:
1.搭建高可用集群。
2.对不同的数据设置不同的过期时间,甚至对相同数据,不同的请求使用不同的过期时间。
---------------------------------------------------------------------------------------------------------------------------------------------------------------
缓存击穿:
定义:
属于并发问题;并发查询数据,数据库里有,缓存里面没有
解决方法:
加锁,加在查询的代码块。第一个请求没有会查询数据库,后面的都可以直接从缓存中获取。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
缓存穿透:
定义:
查询数据,数据库没有,缓存也没有
解决方法:
1.设置缓存空对象
2.设置布隆过滤器
redis支持setbit和getbit操作;
布隆过滤器可以减少磁盘IO和网络请求;
抵御黑客攻击,比如大量查询不存在的key虚耗db的查询资源;
但布隆过滤器返回结果具有概率性,并不完全准确。