Redis缓存雪崩

Redis缓存雪崩和穿透乍一看好像差不多,概念容易混淆.

缓存雪崩是指在我们设置缓存失效时间上时采用了相同的过期时间,导致缓存在某一时刻同时失效,请求全部打到后端数据库,数据库一时请求过大,数据库cpu和IO一时负载过大,造成雪崩。如果不能理解的话,闭上眼睛想象一下,雪山崩塌的场景,还不能理解的话,那就算了吧.

用户请求.jpg

这块其实业界有很多解决方案,但是每一种方案说是完美的,需要结合实际并发量.第一种就是加锁排队,串行的去执行,但是这本质上是一种缓解,允许等待,从用户角度来说不是很好.第二种比较多的就是mutex互斥锁,比如Redis分布式锁SetNX,如果缓存里面没有并不是去加载数据库.第三种限流:比如用滑动窗口控制,在大流量来的时候缩紧;或者通过令牌桶、漏桶算法等.第四种就是做二级缓存,或者双缓存策略。比如B为原始缓存,B2为拷贝缓存,B失效时,可以访问B2,B1缓存失效时间设置为短期,B2设置为长期。这块有点master-slave,主从的意思.

这些技术手段,想达到的终极目标无外乎就是让失效时间达到均匀的状态.

3068404-09ee7b74e89d3599.jpg
图片发自简书App

转载于:https://www.jianshu.com/p/11c69b455d4a

猜你喜欢

转载自blog.csdn.net/weixin_33698043/article/details/91310529