Redis缓存雪崩穿透和击穿

本文介绍了Redis缓存可能导致的问题,包括缓存雪崩、缓存穿透和缓存击穿,并提出了相应的解决方案。缓存雪崩时,可采用Redis高可用、本地缓存及限流降级策略;缓存穿透可通过设置空值缓存和布隆过滤器减少无效查询;缓存击穿可考虑热点数据永不过期或使用分布式锁预先重建缓存。
摘要由CSDN通过智能技术生成

目录

缓存雪崩

缓存穿透

缓存击穿


redis缓存提供了高并发高性能,不仅可以用作缓存还可以做抽奖、粉丝列表收藏点赞、订单自动取消等功能。Redis提供了这些便利的同时也会引发一些问题,例如缓存与数据库双写不一致、缓存雪崩、缓存穿透、缓存击穿、缓存的并发竞争、缓存过期失效等问题。

缓存雪崩

服务系统在高峰期每秒5w个请求,缓存可以扛住每秒5w个请求,缓存机器意外发生故障全盘宕机。此时5w个请求全部落数据库,数据库扛不住然后就挂了。重启数据库,然后数据库立马又被新的流量给打死了,这就是缓存雪崩。缓存雪崩的事前事中事后的解决方案:事前:Redis高可用,主从+哨兵,Redis cluster,避免全盘崩溃。事中:本地ehcache缓存 + hystrix限流&降级,避免MySQL被打死。事后:Redis持久化,一旦重启自动从磁盘上加载数据,快速恢复缓存数据。

用户发送一个请求,系统A收到请求后,先查本地ehcache缓存,如果没查到再查Redis。如果 ehcache和Redis都没有再查数据库,将数据库中的结果写入ehcache和Redis中。限流组件,可以设置每秒的请求,有多少能通过组件,剩余的未通过的请求,怎么办?走降级!可以返回一些默认的值,或者友情提示或者空值。这样设计的好处在于,无论多高的并发数据库绝对不会挂掉,限流组件确保了每秒只有多少个请求能通过。只要数据库不死,对用户来说,2/5的请求都是可以被处理的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

骆驼整理说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值