redis分布式缓存的常见问题

本文探讨了缓存击穿、缓存失效和缓存雪崩等问题,以及相应的解决策略。缓存击穿可通过缓存null值和用户黑名单来防止;缓存失效可采用分布式锁避免同时重建缓存;缓存雪崩则通过设置随机过期时间来缓解。此外,缓存预热也是确保项目启动时热点数据可用的重要手段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1)缓存击穿

客户端恶意的访问一个不存在的数据,从而穿透缓存,请求到达数据库,频繁的发送这类请求,直接查询数据库,增加数据库的压力.

解决:
1.在缓存服务中缓存null值
2.用户黑名单(在网关,ip限流,限制相同ip直接封ip,黑名单存redis)
3.使用布隆过滤器(判断,一个数据可能存在或者一定不存在)
布隆过滤器:一个数据结构

2)缓存失效

某个缓存失效之后,大量的请求访问该数据,在第一个请求重建缓存回来之前,大量的请求发现缓存失效,都会去尝试重建缓存,从而导致数据库压力增加。

解决:

1、在重建缓存时,添加分布式锁

3)缓存雪崩

大量的缓存,在同一时刻一起失效。

解决:

1、新建缓存时,采用固定 + 随机数的方式设置过期时间
错开缓存过期时间

4)缓存预热

在项目运行之前,分析出热点数据,直接添加到缓存服务器中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值