Как получить уведомление от Redis, если ключ изменяется в ходе операции восстановления - PullRequest
1 голос
/ 11 марта 2020

У меня есть 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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...