首页/数据/数据库速查/客户端缓存(CLIENT TRACKING)
本包目录(495 条)
MySQL 基础与连接36 条SQL 语法52 条用户与权限21 条备份与恢复56 条主从复制与高可用53 条性能与调优57 条Redis 命令96 条
Redis 运维与场景124 条

客户端缓存(CLIENT TRACKING)

Redis 6.0+ 的服务端辅助客户端缓存:开启后服务端记录客户端读过的 key,key 被修改时推送失效通知,客户端据此删本地缓存;BCAST 模式按前缀广播以省内存。

数据库速查数据更新于 2026-10-12

默认模式与 BCAST 模式

默认模式与 BCAST 模式
# 默认模式:服务端记住「本连接读过」的 key,变化时逐 key 通知(RESP3 push)
CLIENT TRACKING ON
GET user:1001
# 其他客户端 SET user:1001 后,本连接收到:
# >2 invalidate
# user:1001

# BCAST:不记单个 key,按前缀广播失效(内存开销小,通知更多)
CLIENT TRACKING ON BCAST PREFIX user:

CLIENT TRACKINGINFO     # 查看当前 tracking 状态
CLIENT TRACKING OFF
两种模式默认=精确记录 key;BCAST=按 PREFIX 广播
RESP2 客户端用 REDIRECT <id> 把失效消息转发到另一连接的 Pub/Sub 频道
重连tracking 状态不保留,重连后要重新开启并重建本地缓存
默认模式下服务端要为每个客户端维护「读过的 key」表,连接多/key 多时内存开销明显,常用采样或改 BCAST 控制。

易错点

  • 默认模式下大量连接各自记录海量 key:服务端 tracking 内存飙升
  • 把失效通知当必须收到:通知丢失/重连期间本地缓存脏读,TTL 兜底不可省

数据来源与参考

  • Redis 官方文档: Client-side caching
  • Redis 官方文档: CLIENT TRACKING

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌