并发消息队列Redis
- 分类
- 分布式系统
- 难度
- 未设置
- 来源数
- 1
- 更新时间
- 2026/03/29 00:57
答案
缓存雪崩就是当一个时刻有大量的key同时过期,此时就可能导致大量的访问直接跳过redis访问到数据库,导致数据库的压力骤增,甚至宕机,进而可能导致整个系统的崩溃。导致缓存雪崩主要有两个原因:大量key同时过期或者redis宕机。 针对大量key过期,我们可以有几种解决方法: 1. 对每个key设置随机过期时间,让他们不会在同一时刻集体过期 2. 设置双key,当主key过期后,还有备用key可以访问 3. 设置互斥锁,当key过期时,在访问数据库,构建缓存操作上加锁,保证同一时间只有一个请求来构建缓存 4. 后台线程更新缓存,可以设置key永不过期,将更新缓存的操作交由后台执行。如果key由于内存紧张被淘汰了,那么可以在业务访问的时候通过消息队列通知后台线程更新缓存。 针对redis宕机,可以这样解决: 1. 集群部署 2. 服务熔断或限流,当redis宕机后,可以执行服务熔断,暂停客户端对redis的访问,直接向客户端返回错误,从而降低数据库压力。或者通过限流,只允许少部分请求访问数据库,避免数据库宕机。
相关题目(5)
什么是热点 key,如何处理?共源 1
分布式系统Redis
watch dog 机制是什么?共源 1
分布式系统并发锁Redis
Redis 如何实现分布式锁?共源 1
分布式系统锁Redis
分布式系统并发Redis
元信息
审核状态: active
关联来源: 1
来源面经题(0)
这道题目前没有手动沉淀的面经题来源。
来源(1)
Java八股(数据库).md
knowledge_noteQuestion 132: 什么是缓存雪崩,怎么解决?
Source answer: 缓存雪崩就是当一个时刻有大量的key同时过期,此时就可能导致大量的访问直接跳过redis访问到数据库,导致数据库的压力骤增,甚至宕机,进而可能导致整个系统的崩溃。导致缓存雪崩主要有两个原因:大量key同时过期或者redis宕机。 针对大量key过期,我们可以有几种解决方法: 1. 对每个key设置随机过期时间,让他们不会在同一时刻集体过期 2. 设置双key,当主key过期后,还有备用key可以访问 3. 设置互斥锁,当key过期时,在访问数据库,构建缓存操作上加锁,保证同一时间只有一个请求来构建缓存 4. 后台线程更新缓存,可以设置key永不过期,将更新缓存的操作交由后台执行。如果key由于内存紧张被淘汰了,那么可以在业务访问的时候通过消息队列通知后台线程更新缓存。 针对redis宕机,可以这样解决: 1. 集群部署 2. 服务熔断或限流,当redis宕机后,可以执行服务熔断,暂停客户端对redis的访问,直接向客户端返回错误,从而降低数据库压力。或者通过限流,只允许少部分请求访问数据库,避免数据库宕机。
Reviewed answer: 缓存雪崩是大量 key 同时过期或 Redis 宕机,导致请求集中打到数据库。可通过给 key 设置随机过期时间、双 key、互斥锁、后台更新缓存、Redis 集群部署、服务熔断或限流等方式缓解。