Redis的穿透、雪崩

穿透

穿透是指在缓存中没有的数据,有人恶意请求数据,导致跳过了redis,直接去请求数据库的数据,导致数据库压力过大宕机。比如请求id为8888的信息,但是没有8888的信息,这时候恶意请求会一直去数据库中查询数据。

预防

  1. 常用的方式是直接将为空的数据也存到缓存总,比如id为8888的在数据库中不存在,那也照样存入到缓存中,这样就会去请求缓存中的数据。
  2. 布隆过滤器
    他是以一个二进制数组的形式存在的,0代表不存在,1代表存在,一个位置上可能存在多个key。
    但是他存在误判的情况,比如:实际不存在key:9999这个数据,但是他可能会判断为存在。
    如果误判率越低,说明这个数组会很长,如果误判率高,说明这个数组很短。
    在这里插入图片描述
    当删除数据的时候,布隆过滤器是做不到移除、删除的,因为在一个位置上可能包含多个数据。
    代码的复杂度维护也比较麻烦。

雪崩

所谓雪崩就是当许多缓存在同一时间过期,与此同时有很多的流量进来,这时候访问数据都不经过缓存,直接去访问了数据库,这使得数据库压力很大,可能导致宕机。

预防

1. 永不过期
2. 过期时间错开
比如:热点数据过期时间可以长一点,不经常用的数据过期时间可以短一点
3. 多缓存结合
可以与其他的缓存结合在一起,比如:Memcache。这样就可以先查询redis,redis没有去就去Memcache查。
4.采购第三方Redis
比如:阿里云

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值