redis常见的缓存问题(穿透、雪崩、击穿)

redis缓存穿透

  • 简介
    null值问题。缓存数据先从缓存查询,再从数据库查询。如果key值不存在,则从db中获取。这样大量的请求,缓存失效,给服务器造成压力。
  • 解决方法
    方法一:key值不存在的也保存在缓存中,设置短的过期时间,缓解db的压力。
    方法二:布隆过滤器,即对一定不存在的key进行过滤。把所有可能的key值放到bitmap中,查询时根据bitmap过滤。

redis缓存雪崩

  • 简介
    大量key缓存失效不可用问题。缓存服务器重启或大量key同一时刻失效,导致缓存不可用,给db造成很大压力。
  • 解决方法
    方法一:不同的key设置不同的过期时间,防止同一时间段同时过期。
    方法二:缓存失效后,通过加锁或队列控制读数据库写缓存的线程的数量。比如对某个key只允许一个线程去读数据库写缓存,其他可以从缓存中读取。
    方法三:设置二级缓存,一级缓存失效后,读取二级缓存,二级缓存为长时间缓存。

redis缓存击穿

  • 简介
    同一key缓存失效。 热点数据在某个时间点过期,恰好这时大量的请求访问这个可以,需要从db中查,给数据库造成很大压力。

  • 解决方法
    使用redis的setnx互斥锁,一个线程从数据库中取数据,加入缓存,其他线程从缓存中取数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值