У меня есть python код, прослушивающий события от redis для 'testKey'.
# cat listen.py
import redis
r = redis.Redis(host='localhost', port=6379, db=0)
p = r.pubsub()
p.psubscribe('__keyspace@0__:'+'testKey')
for item in p.listen():
print(item)
# python listen.py
{'type': 'psubscribe', 'pattern': None, 'channel': b'__keyspace@0__:testKey', 'data': 1}
Я получаю уведомление, если ключ изменен как часть операции del или set. Например:
# redis-cli -n 0 del testKey
{'type': 'pmessage', 'pattern': b'__keyspace@0__:testKey', 'channel': b'__keyspace@0__:testKey', 'data': b'del'}
Но если ключ изменяется как часть операции восстановления, событие не генерируется. Например:
# redis-cli -n 2 --raw dump testKey | head -c-1 > file
# cat file | redis-cli -n 0 -x restore testKey 0
При указанной выше операции мой код python ничего не печатает.
Если я проверю с помощью 'redis-cli monitor', я могу увидеть это событие:
# redis-cli monitor
OK
1583920985.754163 [0 127.0.0.1:32770] "restore" "testKey" "0" "\x00\x06Value2\t\x00\x06\xa7L\xda\xd1Uq\r"
Есть ли способ получить уведомление о событии восстановления для ключа через python redis API?