Script Valley
Redis: Complete Course
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 KEx

Listen 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.

Up next

When to use Pub/Sub vs Streams vs a job queue in Redis

Sign in to track progress