穿透数据是什么意思啊

后端 (58) 2023-11-08 10:12

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说穿透数据是什么意思啊,希望能够帮助你!!!。

缓存穿透

穿透是指查询一个不存在的数据,存储层查询不到数据自然就不会回写缓存,这样请求每次都绕过缓存穿透到底层存储去查询。流量高峰时,DB/Hbase 等底层存储可能被打挂。

解决方案:

1、布隆过滤器,一定不存在的数据会被bloom filter拦截掉,从而避免了对底层存储系统的查询压力。

2、缓存空值,查询底层存储返回为空,我们仍然把这个空结果进行缓存

3、缓存预热,一定场景可以认为缓存不存在,底层数据也不存在,比如广告特征数据Hbase预热到Redis,Redis不命中,没必要穿透查询。

缓存雪崩

缓存雪崩是指我们设置缓存时采用了相同的过期时间,导致缓存在某一时刻同时失效,请求全部转发到DB,DB瞬时压力过大而雪崩。

解决方案:缓存失效时间随机打散,我们可以在原有的失效时间基础上增加一个随机值

缓存击穿

缓存在某个时间点过期,恰好在这个时间点对这个Key有大量的并发请求,即缓存被“击穿”,这个和缓存雪崩的区别在于这里针对某一缓存key,前者则是很多key。

解决方案:

1、抢锁成功的线程去底层存储捞取数据放入缓存,其它线程等待

2、一些场景允许这样的假设,缓存中没有数据,底层数据也没有。

今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。