Pub/Sub and StreamsLesson 4.4
Keyspace notifications: subscribe to Redis events like key expiry
keyspace notifications config, notify-keyspace-events, KEA flags, expired event, set event, del event, use cases for expiry hooks
Keyspace notifications
Keyspace notifications let you subscribe to events that happen inside Redis — key expiry, set, del, and more. They are implemented over Pub/Sub internally.
Enable notifications
# redis.conf or at runtime
# K = keyspace events, E = keyevent events, x = expired, g = generic
CONFIG SET notify-keyspace-events KExListen for expired keys
const sub = redis.createClient();
await sub.subscribe('__keyevent@0__:expired', (key) => {
console.log(`Key expired: ${key}`);
// Clean up related data, trigger workflows, etc.
});
// Test it
await client.set('temp:session:99', '1', { EX: 2 });
// After 2 seconds → "Key expired: temp:session:99"Event flag reference
K enables keyspace channel (__keyspace@db__:key). E enables keyevent channel (__keyevent@db__:event). x listens for expiry. g listens for generic commands (del, expire, rename). A is shorthand for all event types. Combine flags: KEA = all events on both channels.
Common use cases: clearing derived data when a session expires, scheduling follow-up jobs when a TTL fires, and real-time audit logging of all key mutations.
