Redis的缓存问题及解决方案

本文探讨了Redis缓存中的三大问题:缓存穿透、缓存击穿和缓存雪崩,分析了它们产生的原因及对系统的影响。针对这些问题,提出了业务层校验、设置过期时间、使用布隆过滤器、热点数据永不过期、提前更新、互斥锁、高可用部署、限流降级和数据预热等解决方案,旨在确保系统稳定性和高并发应对能力。
摘要由CSDN通过智能技术生成

狂神视频:https://www.bilibili.com/video/BV1S54y1R7SB?p=36

缓存穿透

查不到

缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。在流量大时,要是有人利用不存在的key频繁攻击我们的应用,服务就有可能会挂掉。

解决方法
1、业务层校验

对用户发送的请求进行校验,对明显错误的参数 进行拦截。如某个key只能是正数,请求是负数,直接返回错误请求。

2、对不存在的数据设置短过期时间

对某个查询不到的数据,将这个key设置成空访进缓存,并且设置一个短过期时间。

3、布隆过滤

是一种数据结构,通过哈希算法可以判断某个数据存在,但是只能判断一定不存在,不能判断一定存在。

缓存击穿

查的人太多

缓存在某个时间点过期的时候,恰好在这个时间点对这个Key有大量的并发请求过来,这些请求发现缓存过期一般都会从后端DB加载数据并回设到缓存,这个时候大并发的请求可能会瞬间把后端DB压垮。

典型:
微博热搜导致微博宕机;
双十一热门商店过0点缓存刷新,用户抢购,一瞬间大量并发请求发送到后端db,压垮服务器

解决方法
1、设置热点不过时

比较暴力的方法,将热点信息设置成融不过期。

2、提前定时更新

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值