Redis 键空间事件通知详解与实战指南

1. 两类通知通道

通道含义消息载荷
__keyspace@<db>__:<key>键空间通知事件名称,如 del
__keyevent@<db>__:<event>键事件通知具体键名,如 mykey

可独立开启 K(Keyspace)或 E(Keyevent)前缀以精简流量。

2. 配置开关

# redis.conf 或命令行
CONFIG SET notify-keyspace-events "KEA"   # 常用:所有事件
CONFIG SET notify-keyspace-events "Kxg"   # 仅键空间 + 过期 + 通用写
  • 空字符串关闭;
  • 至少包含 K 或 E,否则实际不生效;
  • A= 全部写操作别名(g$lshztxed);m(miss)、n(new) 需显式添加。

3. 事件映射速查

  • DEL mykeydel
  • EXPIRE mykey 10expire
  • 键过期主动删除 → expired
  • 内存淘汰 → evicted
  • 新键写入 → new

所有命令仅在键实际变更时产生事件。

4. 监听示例

# 启用通知
redis-cli config set notify-keyspace-events KEA

# 终端 A:订阅全部
redis-cli --csv psubscribe '__key*__:*'

# 终端 B:测试
redis-cli set foo bar
redis-cli del foo

输出顺序保证:如 RPOPLPUSHrpoplpush

5. 过期事件时序

过期事件在 删除时 触发,而非 TTL=0 的瞬间。若键长期未被访问,实际触发可能延迟;后台过期线程同样异步删除。

6. 集群注意事项

通知仅在持有目标分片的节点产生,不会广播。想监听全局事件需对每个节点建立订阅连接。

7. 最佳实践

  1. 按需开启,避免 "KEA" 带来的高频流量与 CPU 消耗;
  2. 业务只需 DEL/EXPIRE,可用 "Kx"
  3. 使用模式订阅结合前缀过滤减少客户端解析压力;
  4. 消费端应异步处理,防止阻塞 Pub/Sub 读循环;
  5. 生产环境监控 notify-keyspace-events 配置变更,防止误关停导致监听失效。

通过合理使用键空间事件通知,可轻松实现本地缓存失效、数据链路审计与实时指标上报等场景,提升系统一致性与可观测性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hello.Reader

请我喝杯咖啡吧😊

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值