Saturday, 8 June 2019

Redis Keyspace Notifications for Expired Keys:

Actually, I was trying to figuring out how to listen or subscribe on expired keys in Redis, then I came across notifications events in Redis. In this article, I will give you an overview of how to configure key space notifications events.

Enable keyspace notifications:

By default keyspace notifications are disabled in Redis due to performance impact. There are two ways we can enable this either using redis-cli or redis.conf file.

Enable Using Redis-CLI:

$ redis-cli config set notify-keyspace-events Ex
OK
Here we are only configured for expired events on keys so we used Ex
E: key events or events happening on keys
x: expired events
check for more events type these are the events which are present are copied from Redis documentation.
K     Keyspace events, published with __keyspace@<db>__ prefix.
E     Keyevent events, published with __keyevent@<db>__ prefix.
g     Generic commands (non-type specific) like DEL, EXPIRE, RENAME, ...
$     String commands
l     List commands
s     Set commands
h     Hash commands
z     Sorted set commands
x     Expired events (events generated every time a key expires)
e     Evicted events (events generated when a key is evicted for maxmemory)
A     Alias for g$lshzxe, so that the "AKE" string means all the events.

Enable Using Redis.conf:

Add line notify-keyspace-events Ex in redis.conf
See the second last line which is uncommented. We have configured this let’s see with an example.
  • Let’s set value and expire time as 5 sec for key redis first and subscriber for expired events
127.0.0.1:6379> SETEX redis  5 test 
OK
  • Now adding subscriber for expired events.
$redis-cli — csv psubscribe ‘__key*__:*’
Reading messages... (press Ctrl-C to quit)
"psubscribe","__key*__:*",1
After 5 seconds
redis-cli — csv psubscribe ‘__key*__:*’
Reading messages… (press Ctrl-C to quit)
“psubscribe”,”__key*__:*”,1
“pmessage”,”__key*__:*”,”__keyevent@0__:expired”,”redis
Yay !!! it’s working.
That’s it.

No comments:

Post a Comment

Generating Unique Id in Distributed Environment in high Scale:

Recently I was working on a project which requires unique id in a distributed environment which we used as a  primary  key to store in dat...