还在查Redis缓存雪崩&缓存穿透&缓存击穿( 超详细图文解读)

前言:

如果本文对您有帮助,麻烦楼下三连!

缓存雪崩

释义:缓存同一时间大面积的失效,所以,后面的请求都会落到数据库上,造成数据库短时间内承受大量请求而崩掉。

解决方案:

               事前:尽量保证整个 redis 集群的高可用性,发现机器宕机尽快补上。选择合适的内存淘汰策略。

               事中:本地ehcache缓存 + hystrix限流&降级,避免MySQL崩掉

               事后:利用 redis 持久化机制保存的数据尽快恢复缓存

缓存穿透

释义:

一般是黑客故意去请求缓存中不存在的数据,导致所有的请求都落到数据库上,造成数据库短时间内承受大量请求而崩掉。

解决方案:

有很多种方法可以有效地解决缓存穿透问题,最常见的则是采用布隆过滤器,将所有可能存在的数据哈希到一个足够大的bitmap中,一个一定不存在的数据会被 这个bitmap拦截掉,从而避免了对底层存储系统的查询压力。另外也有一个更为简单粗暴的方法,如果一个查询返回的数据为空,我们仍然把这个空结果进行缓存,但它的过期时间会很短,不超过五分钟。

缓存击穿

对于一些设置了过期时间的key,如果这些key可能会在某些时间点被超高并发地访问,是一种非常“热点”的数据。这个时候,需要考虑一个问题:缓存被“击穿”的问题,这个和缓存雪崩的区别在于这里针对某一key缓存,前者则是很多key。

缓存在某个时间点过期的时候,恰好在这个时间点对这个Key有大量的并发请求过来,这些请求发现缓存过期一般都会从后端DB加载数据并回设到缓存,这个时候大并发的请求可能会瞬间把后端DB压垮。

解决方案:

1.使用互斥锁(mutex key)

2. "提前"使用互斥锁(mutex key)

3. "永远不过期"

4. 资源保护

参考文章:http://carlosfu.iteye.com/blog/2269687?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io

VisualStudio 2015 key

Professional Edition:HMGNV-WCYXV-X7G9W-YCX63-B98R2
Enterprise Edition:HM6NR-QXX7C-DFW2Y-8B82K-WTYJV

 

任何的限制,都是从内心开始的!

当你不再忍耐,不再克制,才会真正的成熟!

在做任何事情时,都要有坚定且清晰的目标,还要牢记目标!

            

       小编需要您的关注哦!您的赞是对我最大的鼓励!

猜你喜欢

转载自blog.csdn.net/l_mloveforever/article/details/85317779
今日推荐