模型服务连接失败
并发消息队列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)

分布式系统Redis
分布式系统并发Redis
分布式系统Redis
分布式系统并发Redis

元信息

审核状态: active
关联来源: 1

来源面经题(0)

这道题目前没有手动沉淀的面经题来源。

来源(1)

Java八股(数据库).md

knowledge_note
Question 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 集群部署、服务熔断或限流等方式缓解。