Upstash allows you to listen for keyspace notifications over pubsub channels to
receive events for changes over the keys.
For each event that occurs, two kinds of events are fired over the corresponding
pubsub channels:
- A keyspace event that will use the pubsub channel for the key, possibly containing
other events for the same key
- A keyevent event that will use the pubsub channel for the event, possibly containing
other events for the different keys
The channel names and their content are of the form:
__keyspace@0__:keyname channel with the values of the event names for the keyspace
notifications
__keyevent@0__:eventname channel with the values of the key names for the keyevent
notifications
Enabling Notifications
By default, all keyspace and keyevent notifications are off. To enable it, you can use
the CONFIG SET command, and set the notify-keyspace-events options to one of the
appropriate flags described below.
Each keyspace and keyevent notification fired might have an effect on the latency of the
commands as the events are delivered to the listening clients and cluster members for
multi-replica deployments. Therefore, it is advised to only enable the minimal subset of the
notifications that are needed.
| Flag | Description |
|---|
| K | Keyspace events |
| E | Keyevent events |
| g | Generic command events |
| $ | String command events |
| l | List command events |
| s | Set command events |
| h | Hash command events |
| z | Sorted set command events |
| t | Stream command events |
| d | Module(JSON) command events |
| x | Expiration events |
| e | Eviction events |
| m | Key miss events |
| n | New key events |
| A | Alias for g$lshztxed |
At least one of the K or E flags must be present in the option value.
For example, you can use the following command to receive keyspace notifications
only for the hash commands:
curl -X POST \
-d '["CONFIG", "SET", "notify-keyspace-events", "Kh"]' \
-H "Authorization: Bearer $UPSTASH_REDIS_REST_TOKEN" \
$UPSTASH_REDIS_REST_URL
You can listen for all the channels using redis-cli to test the effect of the
above command:
redis-cli --tls -u $UPSTASH_REDIS_CLI_URL --csv psubscribe '__key*__:*'
Disabling Notifications
You can reuse the CONFIG SET command and set notify-keyspace-events option to empty string
to disable all keyspace and keyevent notifications.
curl -X POST \
-d '["CONFIG", "SET", "notify-keyspace-events", ""]' \
-H "Authorization: Bearer $UPSTASH_REDIS_REST_TOKEN" \
$UPSTASH_REDIS_REST_URL
Checking Notification Configuration
CONFIG GET command can be used the get the current value of the notify-keyspace-events option
to see the active keyspace and keyevent notifications configuration.
curl -X POST \
-d '["CONFIG", "GET", "notify-keyspace-events"]' \
-H "Authorization: Bearer $UPSTASH_REDIS_REST_TOKEN" \
$UPSTASH_REDIS_REST_URL