Redis keyspace уведомлений - получить значения (маленький размер) операций над множествами - PullRequest
0 голосов
/ 02 сентября 2018

Я работаю над созданием БД с помощью Redis.

Один из моих сотрудников состоит в том, что все клиенты в системе смогут прослушивать установленные события и получать информацию как об изменении ключа, так и об изменении значения.

Я знаю, что стоимость публикации может быть большой (512 МБ), но я знаю, что в моей системе размер значения не будет превышать 100 символов.

У меня есть 3 возможных решения, и мне интересно, какое из них будет лучше, или рассмотрим другие решения:

1) После каждой заданной операции клиент также публикует ее (PUB / SUB)

2) Отредактируйте функцию setGenericCommand, чтобы также опубликовать значение и использовать привязку пространства клавиш.

3) После получения клиентом уведомления о пространстве ключей оно получит значение с помощью операции get.

Я хотел бы понять, какой подход будет лучше? Спасибо!

1 Ответ

0 голосов
/ 02 сентября 2018

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

Тем не менее, если вы согласны с обещаниями PubSub, 1 - самое простое, и я бы согласился. Самое большее, я бы предоставил клиентам оболочку Lua, которая объединяет команды SET и PUBLISH. Это, разумеется, устраняет необходимость прослушивания уведомлений Keyspace, поскольку вы сами его реализуете.

2 означает взлом Redis, что замечательно, но означает, что вам придется поддерживать свое собственное, то есть -;

3 также достаточно прост, но с 1 вы получаете одну поездку туда и обратно вместо 2.

Другой (4) подход заключается в написании пользовательского модуля, но IMO слишком сложен для этой необходимости. Идите с 1 и Луа, и пусть сила будет с вами.

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