redis面试题:缓存穿透、雪崩、击穿、双写不一致

缓存穿透

通过一个key先查询redis,查不到,又去查询数据库,还查不到,从头穿到尾。
两种解决方案:

  1. 在前端做数据校验,校验这个数据是否符合要求
  2. 布隆过滤器(常用):布隆过滤器可以想象成一个二进制的数组文件,保存数据的时候将数据对应的hash值的下标的位置置为1
    ,1表示存在,0表示不存在,这样查询之前先判断该值是否一定不存在,为0时就返回。

redis雪崩

在某一时刻大量的数据同时失效,导致大量的请求打到数据库上。
两种解决方案:

  1. 避免缓存集中失效,在设置过期时间的时候在后面拼上一个随机值
  2. 互斥锁(mutex key),当用户来查缓存的时候发现没有数据就给他加上一个互斥锁,然后查询缓存没有就去查询数据库,查询之后写缓存,那么后面的用户过来查询缓存的时候就有数据了

redis击穿

大量的并发访问某一个数据,然后这个数据又刚好过期了,然后就会导致所有请求全部打到了数据库上
解决方案:互斥锁

redis双写不一致

指的是redis缓存中的数据和数据库中的数据不一致,通常是修改数据失败的场景
解决方案:

先删除缓存,在写入数据库,写入数据库成功后再写缓存

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值