Как обновить значения зависимых ключей в Redis? - PullRequest
1 голос
/ 10 марта 2020

Я хотел бы знать, существует ли рекомендуемый механизм для обновления одного или нескольких ключей, основываясь на значениях других, в случае изменения этих значений.

Это своего рода свойства, или методы получения и установки , но для ключей redis.

Зачем мне это нужно?

Предположим, у меня есть несколько (в моем случае, 10-100) клиентов, которым все должны знать значение dep1, которое является (чистой) функцией indep1, ..., indepN. Один из способов сделать это - заставить всех клиентов следить за изменениями в indep1, ..., indepN и вычислять значение dep1. Мне кажется, это дублирует работу и увеличивает сетевой трафик c. Однако, если dep1 «автоматически» обновляется, им всем нужно только прослушать изменения dep1.

Текущее мышление

Единственное решение, которое я могу думать о том, чтобы иметь одного клиента мониторинга, который делает эту работу. Однако мне интересно, есть ли лучший способ. Возможно с Lua. Я полный Redis и, кстати, Lua noob.

1 Ответ

1 голос
/ 12 марта 2020

Использование Lua кажется неплохой идеей. Вы можете использовать Lua сценарии для обновления любого из indep1 ... indepN, и сценарии могут автоматически вычислять dep1 и устанавливать его значение в базе данных за одну транзакцию (сценарий Lua выполняется до завершения перед обработкой любых других команд). Таким образом, чтение dep1 гарантированно будет правильным, поскольку оно было обновлено атомарно вместе с любым из indepX. Тогда вам нужно будет только наблюдать за изменениями пространства клавиш на dep1 в вашем клиенте.

Примечание: это может быть не самый эффективный способ сделать это, так как вычисления для определения dep1 могут быть дорогими и дублируется при каждом обновлении одного из indepX.

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