缓存穿透,缓存击穿,缓存雪崩
缓存穿透
原因
查询一个数据库不存在的数据,既然数据库不存在,那么缓存自然也不会存在,因此所有这种垃圾查询都会打到数据库上,给数据库造成负担。
解决方法
布隆过滤器缓存空对象
布隆过滤器
相信不少同学面试时被问过场景设计题:如果目前我们有个营销垃圾邮箱的汇总表,我们希望设计一个高效的拦截过滤器,怎么设计呢?
大家肯定脱口而出:hashmap/hashset。
对,这个思路一点没错,如果我们的邮箱汇总表不大,当然可以这么干。但如果汇总表稍微大一点点比如上到10亿,那就不能这么干了。一般来说面试官会回答:这么做占用空间太大,服务器内存撑不住,可以换一个思路,我们的这个业务可以允许一定的误报。
既然面试官都给提示了,那咱就往挤压内存占用的思路去考虑,既然又希望减少空间,又能接受误报,可以考虑这个思路。
首先我们先设置一个空bit数组,初始全0:
设计k个hash映射函数,这k个映射函数各不相同,
缓存穿透,缓存击穿,缓存雪崩最先出现在Python成神之路。
共有 0 条评论