Redis 击穿,穿透,雪崩及解决方案

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: Redis 击穿,穿透,雪崩及解决方案

Redis 缓存击穿

1、形成原因:


当缓存服务器重启或者大量缓存集中在某一个时间段失效,这样在失效的时候,也会给后端系统(比如DB)带来很大压力。


2、解决方案


1、增加互斥锁:基于 redis or zookeeper 实现互斥锁,等待第一个请求构建完缓存之后,再释放锁,进而其它请求才能通过该 key 访问数据


2、设置用不过期:击穿采用互斥锁。可能会发生死锁、线程池阻塞等问题,建议:高热点key,写定时器更新key的过期时间,最好是在并发量最小的时候。


3、缓存击穿示例图

18.pngRedis 缓存穿透

1、形成原因:


key对应的数据在数据源并不存在,每次针对此key的请求从缓存获取不到,请求都会到数据源,从而可能压垮数据源。比如用一个不存在的用户id获取用户信息,不论缓存还是数据库都没有,若黑客利用此漏洞进行攻击可能压垮数据库。


2、解决方案


1、采用布隆过滤器,将所有可能存在的数据哈希到一个足够大的bitmap中,一个一定不存在的数据会被 这个bitmap拦截掉,从而避免了对底层存储系统的查询压力


2、如果一个查询返回的数据为空(不管是数据不存在,还是系统故障),我们仍然把这个空结果进行缓存,但它的过期时间会很短,最长不超过五分钟。


3、缓存击穿示例图

19.png

Redis 缓存雪崩

1、形成原因:


当缓存服务器重启或者大量缓存集中在某一个时间段失效,这样在失效的时候,也会给后端系统(比如DB)带来很大压力


2、解决方案


1、保证高可用:做redis集群,哨兵。如果有的redis服务器出现宕机,切换到其他的节点


2、后端限流削峰:利用redis lua做漏斗算法,其他的进程进行排队。降级服务,牺牲一些服务器,淘宝双十一的时候,就不允许查看一年前的订单也不允许退款


3、过期时间错开,生成缓存的时候,一定时间内的过期时间随机生成。尽量避免大量缓存同一时间内

失效


3、缓存击穿示例图

20.png

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
28天前
|
缓存 监控 NoSQL
【Redis性能瓶颈揭秘】「调优系列」深入分析热Key的排查策略和解决方案
【Redis性能瓶颈揭秘】「调优系列」深入分析热Key的排查策略和解决方案
187676 2
|
1月前
|
缓存 NoSQL 安全
【Redis】缓存穿透
【Redis】缓存穿透
30 0
|
2月前
|
消息中间件 NoSQL Java
Redis Streams在Spring Boot中的应用:构建可靠的消息队列解决方案【redis实战 二】
Redis Streams在Spring Boot中的应用:构建可靠的消息队列解决方案【redis实战 二】
223 1
|
1月前
|
存储 缓存 NoSQL
[Redis]——缓存击穿和缓存穿透及解决方案(图解+代码+解释)
[Redis]——缓存击穿和缓存穿透及解决方案(图解+代码+解释)
260 0
|
1月前
|
存储 缓存 NoSQL
【Redis】3、Redis 作为缓存(Redis中的穿透、雪崩、击穿、工具类)
【Redis】3、Redis 作为缓存(Redis中的穿透、雪崩、击穿、工具类)
55 0
|
2月前
|
缓存 监控 NoSQL
Redis缓存保卫战:拒绝缓存击穿的进攻【redis问题 三】
Redis缓存保卫战:拒绝缓存击穿的进攻【redis问题 三】
38 0
|
2月前
|
缓存 监控 NoSQL
Redis缓存雪崩:预防、应对和解决方案【redis问题 二】
Redis缓存雪崩:预防、应对和解决方案【redis问题 二】
231 0
|
2月前
|
缓存 监控 NoSQL
防弹防线:彻底击败Redis缓存穿透问题【redis问题 一】
防弹防线:彻底击败Redis缓存穿透问题【redis问题 一】
51 0
|
3月前
|
存储 缓存 NoSQL
Redis 缓存击穿(失效)、缓存穿透、缓存雪崩怎么解决?
Redis 缓存击穿(失效)、缓存穿透、缓存雪崩怎么解决?
43 0
|
16天前
|
NoSQL Linux Redis
06- 你们使用Redis是单点还是集群 ? 哪种集群 ?
**Redis配置:** 使用哨兵集群,结构为1主2从,加上3个哨兵节点,总计分布在3台Linux服务器上,提供高可用性。
233 0

热门文章

最新文章