Skip to content
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions 03-database/redis/Redis.md
Original file line number Diff line number Diff line change
Expand Up @@ -1113,6 +1113,30 @@ Distributed Hash Table(DHT) 是一种哈希分布方式,其目的是为了
Hash环的数据倾斜问题
引入虚拟节点解决数据倾斜的问题

## 面试补充:缓存治理高频问题

Redis 面试题建议把数据结构、缓存模式、集群高可用和一致性治理分开回答。缓存问题尤其要说明“故障发生时如何保护数据库”。

### 缓存穿透

缓存穿透是请求查询的数据不存在,导致每次都 miss Redis 并打到数据库。治理通常分三层:入口参数校验先拦明显非法请求;布隆过滤器判断 key 是否可能存在;数据库查不到时写入短 TTL 空值缓存,防止同一个不存在 key 反复回源。

### 缓存击穿

击穿是热点 key 过期瞬间,大量请求同时回源数据库。核心是把并发重建收敛成单线程重建。常见做法是互斥锁、热点 key 逻辑过期、后台主动刷新和本地缓存兜底。锁失败的请求可以短暂等待、返回旧值或快速失败。

### 缓存雪崩

雪崩是大量 key 同时过期,或 Redis 整体不可用,导致请求集中打到数据库。预防上要给 TTL 加随机抖动、热点永不过期、多级缓存;止血上要限流、熔断、降级和保护数据库连接池。

### 大 key 与热 key

大 key 会阻塞 Redis 单线程、放大网络传输、拖慢复制和迁移。热 key 会造成单节点负载倾斜。治理手段包括拆分 key、分页读取、异步删除、读本地缓存、热点副本、限流和提前发现。生产上要定期扫描 key 大小和访问分布。

### 缓存一致性

常见策略是先更新数据库,再删除缓存,并结合重试队列或订阅 binlog 保证删除可靠。对强一致要求高的链路,要缩小缓存使用范围或读主库确认。缓存本质是性能优化组件,不能替代数据库一致性约束。

---

<!-- note-nav:start -->
Expand Down