Использование Node.js для прослушивания ключевых событий в Redis - PullRequest
4 голосов
/ 21 января 2012

Мне нужно знать, когда данные записываются на определенные ключи в магазине Redis.
Есть ли способ прослушивания событий ключа Redis с помощью Node.js или мне нужно использовать утилиты pub / sub?
Во втором случае, как лучше всего это сделать?

Ответы [ 2 ]

2 голосов
/ 21 января 2012

Есть ли способ прослушивания событий ключа Redis с помощью Node.js или я должны использовать утилиты pub / sub?

Насколько я знаю, сам redis изначально не поддерживает уведомлений об изменении ключа , хотя есть и другие альтернативы , включая решение на основе pub / sub.

1 голос
/ 05 марта 2012

Если вы не хотите использовать pubsub, есть много возможностей для творческих решений с операциями блокировки Redis (BLPOP, BRPOP, BRPOPLPUSH). Вы можете назначить соединение Redis на своем сервере для блокировки до тех пор, пока новый элемент не будет добавлен в список, и фактически добавить его в указанный список сразу после сохранения ключа (в multi exec!). Итак, что-то общее может выглядеть следующим образом (вы можете использовать два разных терминала для симуляции двух разных соединений):

Соединение 1 (после этого соединение будет зависать):

BRPOP myfunkeys 0

Соединение 2:

redis 127.0.0.1:6379> multi
OK
redis 127.0.0.1:6379> set somekey "foo"
QUEUED
redis 127.0.0.1:6379> rpush myfunkeys "somekey:foo"
QUEUED
redis 127.0.0.1:6379> exec
1) OK
2) (integer) 1
redis 127.0.0.1:6379> 

Вернуться к соединению 1 после того, как вы EXEC:

1) "myfunkeys"
2) "somekey:foo"
(67.51s)
...