Redis缓存穿透、缓存击穿和缓存雪崩,以及解决办法

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

缓存穿透、缓存击穿和缓存雪崩以及解决办法

问题1缓存雪崩

一般使用缓存用于缓冲对DB的冲击如果缓存宕机所有请求将直接打在DB造成DB宕机从而导致整个系统宕机

2 种策略同时使用

对缓存做高可用HA防止缓存宕机使用断路器如果缓存宕机为了防止系统全部宕机限制部分流量进入 DB保证部分可用其余的请求返回断路器的默认值。大量的热点数据同时到期解决方案为过期时间上引入随机数以防止同时到期的问题

问题2缓存穿透

解释 1 缓存查询一个没有的 key同时数据库也没有如果黑客大量的使用这种方式那么就会导致DB 宕机

解决方案可以使用一个默认值来防止例如当访问一个不存在的 key然后再去访问数据库还是没有那么就在缓存里放一个占位符下次来的时候检查这个占位符如果发生时占位符就不去数据库查询了防止 DB 宕机。

解释 2 大量请求查询一个刚刚失效的 key导致 DB 压力倍增可能导致宕机但实际上查询的都是相同的数据。

解决方案 可以在这些请求代码加上双重检查锁。但是那个阶段的请求会变慢。不过总比 DB 宕机好。

问题3缓存击穿

缓存击穿是指缓存中没有但数据库中有的数据。这时由于并发用户特别多同时读缓存没读到数据又同时去数据库去取数据引起数据库压力瞬间增大造成过大压力。

解决方案

设置热点数据永远不过期

缓存预热

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: redis

“Redis缓存穿透、缓存击穿和缓存雪崩,以及解决办法” 的相关文章