События недействительности ключевого события кластера Azure Redis

Я установил службу кеширования Azure Redis с двумя кластерами. Я использую StackExchange.Redis для связи с кешем. Я использую строку подключения на основе SSL для подключения, как это предлагается на портале Azure.

Проблема:
У меня есть несколько экземпляров моей службы, которая подключается к Redis. Когда я удаляю ключ с одного узла, я хочу, чтобы он сохранялся в других экземплярах моей службы (для аннулирования локального кеша в памяти). Однако я заметил, что не все мои экземпляры службы получают ключевые события удаления. Я получаю события Pub / Sub во всех экземплярах, но кажется, что уведомления Keyspace не доставляются через все кластеры Redis. Я пробовал это с помощью __keyevent @ 0: __: del для моих тестовых целей, где я заметил эту проблему.

Инициализация моего ConnectionMultiplexer следующим образом:

ConnectionMultiplexer.Connect(connectionString)

Я прокрутил https://github.com/redis/redis/issues/2541 и выяснил, что уведомления Keyspace не доставляются между кластерами, в соответствии с проблемой - решение заключается в подключении клиентов ко всем мастерам, что в моем случае Redis настроено через Azure, и не так ясно, как указать все главные узлы (адреса).

Любая помощь будет оценена по достоинству. Заранее спасибо.

ОБНОВЛЕНИЕ: Nuget для клиента Redis: StackExchange.Redis.StrongName 1.2.6


person Sagar0921    schedule 31.12.2020    source источник
comment
github.com/StackExchange/StackExchange.Redis/issues/789   -  person dotjoe    schedule 01.01.2021


Ответы (1)


Существует открытый PR, чтобы добавить поддержку уведомлений о пространстве ключей кластера. Обходной путь - использовать redis pub / sub для самостоятельной обработки недействительности ключа ... вы просто не получите естественную поддержку TTL Redis для истечения срока действия ключа.

person dotjoe    schedule 12.01.2021