如何通俗的理解Redis缓存击穿、穿透、雪崩

如何通俗的理解Redis缓存击穿、穿透、雪崩

缓存雪崩

缓存服务器宕机,所有请求全部落到数据库上,导致数据库挂掉了。此时,就算是重启数据库,马上还会被新的请求给干掉。这就是缓存雪崩。
解决方案
雪崩前:redis设计成高可用,防止大面积故障,如 Redis Sentinel 和 Redis Cluster
雪崩时:缓存限流、降级
雪崩后:redis持久化,快速备份和恢复数据

缓存穿透

当一个请求从缓存中取数据时,如果请求的key在缓存中不存在,就会跳过缓存,直接请求数据库,如果数据库中也不存在就会返回null,null是不会写入缓存的,多次请求,就会造成缓存穿透
解决方案
1、返回空值也存入缓存中,并设置过期时间,不过要考虑到过多的空值的键造成的影响
2、布隆过滤,对所有可能查询的参数以hash形式存储,在控制层先进行校验,不符合则丢弃。

缓存击穿

某个key访问非常频繁,处于集中式高并发的访问状态,当这个key在失效的瞬间,大量的请求就击穿了缓存,直接请求数据库。
解决方案
将高访问量的数据设置为永不过期;
实现互斥锁,待一个请求构建完释放锁后,其他请求再进行访问。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值