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.

FlagDescription
KKeyspace events
EKeyevent events
gGeneric command events
$String command events
lList command events
sSet command events
hHash command events
zSorted set command events
tStream command events
dModule(JSON) command events
xExpiration events
eEviction events
mKey miss events
nNew key events
AAlias 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