Redis缓存雪崩、缓存穿透、缓存穿透的解决方案

一.什么叫做Reids缓存雪崩?
定义: 指的是大量缓存集中在一段时间内失效,发生大量的缓存穿透,所有的查询都落在数据库上,造成了缓存雪崩,最后导致机器宕机。
解决方案:
1.用加分布式锁或者同步锁 ,单进程读入数据库的数据将其写入对应的缓存层,从而避免失效时大量的并发请求落到底层存储系统上。
在这里插入图片描述
2.尽量让失效时间点均匀分布,设置不同的过期时间

二.什么叫做缓存击穿
定义: 指一个key非常热点,在不停的扛着大并发,大并发集中对这一个点进行访问,当这个key在失效的瞬间,持续的大并发就穿破缓存,直接请求数据库,就像在一个屏障上凿开了一个洞。
解决方案:
1.缓存数据用不过期
2.加分布式锁或者同步锁,保持程序单进程读取数据库的数据并缓存到Redis缓存中

三.什么叫做缓存穿透?
定义:一般的缓存系统,都是按照key去缓存查询,如果不存在对应的value,就应该去后端系统查找(比如DB)。一些恶意的请求会故意查询不存在的key,请求量很大,就会对后端系统造成很大的压力。这就叫做缓存穿透。
解决方案:
1.根据Key去数据库查询的时候即使,数据库查询不到数据,也将NULL缓存到Reids中,并且设置较短的过期时间
2.加同步锁,减少同时时刻DB的压力

发布了76 篇原创文章 · 获赞 2 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/u014265398/article/details/104359301