У меня есть список в Redis, которым управляет bull. Я хотел бы контролировать длину этого списка в другом процессе. Я новичок в Redis, поэтому, хотя я думаю, что нашел «правильный» способ сделать это, у меня возникают проблемы.
Из небольшого исследования я пришел к выводу, что в Redis есть уведомления Keyspace начиная с версии 2.8.0, и они звучали уместно.
Прежде чем идти дальше, я просто хочу подтвердить, что у меня включены события keyspace:
127.0.0.1:6379> CONFIG GET notify-keyspace-events
1) "notify-keyspace-events"
2) "AKE"
Кроме того, согласно INFO
, я думаю, что нахожусь в базе данных 0:
# Keyspace
db0:keys=315,expires=0,avg_ttl=0
С этим не по пути: у меня проблемы с подпиской на каналы, которые я хочу. Модуль создает и управляет списком под ключом: 'bull:Test Queue:wait', поэтому, основываясь на документации по уведомлениям о пространстве ключей, я понимаю, что для прослушивания событий push и pop я должен делать следующее.
SUBSCRIBE "__keyspace:0__:bull:Test Queue:wait rpush"
SUBSCRIBE "__keyspace:0__:bull:Test Queue:wait lpush"
SUBSCRIBE "__keyspace:0__:bull:Test Queue:wait rpop"
SUBSCRIBE "__keyspace:0__:bull:Test Queue:wait lpop"
Если я запускаю 1. в одном процессе, а затем в другом процессе:
RPUSH "bull:Test Queue:wait" 222
Тогда подписка не получает сообщение. Как ни странно, если я использую PSUBSCRIBE
и слушаю "__keyspace:0__:bull:Test Queue:wait*"
, тогда он действительно срабатывает должным образом. Но я не ищу все события, только толчки и щелчки. Так что это не совсем то, что мне нужно.
Если бы кто-то мог сказать мне, что я делаю неправильно, это было бы очень признательно.
Спасибо за ваше время.