用 keyspace 通知监控 key 删除和过期事件
Redis维护命令
CONFIG GET notify-keyspace-events
# E: keyevent channel, x: expire events, g: generic commands (DEL, EXPIRE, RENAME):
CONFIG SET notify-keyspace-events Exg
# Listen to expire and del events in db 0:
redis-cli -h redis1 -p 6379 --csv PSUBSCRIBE '__keyevent@0__:expired' '__keyevent@0__:del'
# Turn off:
CONFIG SET notify-keyspace-events ""作用
把 key 上的事件(expire、del、set 等)发布到 pub/sub 频道,从而实时观察哪个 key 在何时被删除或过期。
适用场景
用于证明 key“自行消失”时是哪条命令或过期操作删除了它们,或为依赖过期事件的工作流(会话关闭)提供输入。
注意
事件会增加 CPU 和网络负载;在繁忙系统上 'A'(所有类别)尤其昂贵,因此只启用需要的类别,用完后关闭。Pub/sub 是发后即忘的:未连接的订阅者会错过事件,且不会持久化任何内容。expired 事件是在 key 被实际删除时(访问时或由后台过期周期删除)产生的,而不是在 TTL 到期的那一刻。