Redis 缓存穿透、缓存雪崩、缓存击穿的区别和解决方案

在这里插入图片描述

  1. 缓存穿透
      访问一个不存在的key,缓存不起作用,请求会穿透到DB,流量大时DB会挂掉。
    解决方案:
    (1)拦截器,id<=0的直接拦截。
    (2)从cache和db都取不到,可以将key-value写为key-null,设置较短过期时间,如30秒(设置太长会导致正常情况也没法使用)。这样可以防止攻击用户反复用同一个id暴力攻击。

  2. 缓存击穿
      一个存在的key,在缓存过期的一刻,同时有大量的请求,这些请求都会击穿到DB,造成瞬时DB请求量大、压力骤增。
    解决方案:
    (1)设置热点数据永远不过期。
    (2)加互斥锁。

  3. 缓存雪崩
    大量的key设置了相同的过期时间,导致在缓存在同一时刻全部失效,造成瞬时DB请求量大、压力骤增,引起雪崩。
    解决方案:
    (1)缓存数据的过期时间设置随机,防止同一时间大量数据过期现象发生。
    (2)如果缓存数据库是分布式部署,将热点数据均匀分布在不同的缓存数据库中。
    (3)设置热点数据永远不过期。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值