redis 缓存雪崩、穿透、击穿

1. redis简介:

开源的、高性能的非关系型数据库。


2.缓存雪崩:

大量的redis缓存key同一时间失效,导致大量访问请求直接打到数据库,造成数据库挂掉。

解决方案:

1.随机初始化缓存失效时间,不要让大量缓存在同一时间失效。

2.将热点key分配到不同的redis节点上。

3.设置定时任务,在缓存失效时将数据重新刷进去。


3.缓存穿透

一般是指redis和数据中都没有这样的数据,大量请求穿透redis直接怼到数据库,导致数据库挂掉。一般是黑客恶意攻击

解决方案:

1、使用布隆过滤器,这个是比较好的方法。布隆过滤器的特点:它告诉你存在的不一定存在。但是它说不存在的一定就不存在。所以能够将不存在的请求KEY直接return掉。

2、将第一次请求数据库查询结果写入Redis,这样能避免同一个key反复调用,但不能避免不同的非法KEY调用。


4.缓存击穿

访问某个热点数据时,数据放进缓存,正常情况下,由redis返回结果。但当key突然失效时,大量的访问请求击穿Redis,直接怼到数据库。

解决方案:使用分布式锁。 在请求数据库时上锁,只有一个线程能抢到这个锁,也就是说只有一个线程能访问数据库,其它没有抢到锁的线程先睡几秒。当那个抢到锁的线程拿到数据后,将数据写到redis里面。其余线程睡醒了,再去访问redis,里面就有数据了。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值