Проблема с подпиской на уведомления о пространстве ключей

У меня есть список в 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 я должен делать следующее.

  1. SUBSCRIBE "__keyspace:0__:bull:Test Queue:wait rpush"
  2. SUBSCRIBE "__keyspace:0__:bull:Test Queue:wait lpush"
  3. SUBSCRIBE "__keyspace:0__:bull:Test Queue:wait rpop"
  4. SUBSCRIBE "__keyspace:0__:bull:Test Queue:wait lpop"

Если я запускаю 1. в одном процессе, а затем в другом процессе:

RPUSH "bull:Test Queue:wait" 222

Тогда подписка не получает сообщение. Как ни странно, если я использую PSUBSCRIBE и слушаю "__keyspace:0__:bull:Test Queue:wait*", тогда он действительно срабатывает должным образом. Но я не ищу все события, только толчки и щелчки. Так что это не совсем то, что мне нужно.

Если бы кто-то мог сказать мне, что я делаю неправильно, это было бы очень признательно.

Спасибо за ваше время.


person JamesH    schedule 23.06.2014    source источник


Ответы (1)


Я неправильно понял документы.

Канал — __keyspace:0__:bull:Test Queue:wait, а сообщение — rpush, lpush и т. д. В качестве альтернативы канал может быть: __keyspace:0__:rpush, а сообщение — bull:Test Queue:wait.

Спасибо Яну-Эрику Редигеру, который помог мне на доске обсуждений.

person JamesH    schedule 25.06.2014