Уведомления о появлении ключей в Redis с помощью StackExchange.Redis

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

Проверка доступных тестов. Я нашел pubsub, используя каналы, но это больше работает как служебная шина/очередь, а не подписывается на конкретные события Redis.

Возможно ли использовать эту функцию Redis с помощью StackExchange.Redis?

Ответы

Ответ 1

Обычный API-интерфейс подписчика должен работать нормально - в прецедентах нет предположений, и это должно работать нормально.

Однако я согласен с тем, что это встроенная функциональность, которая, возможно, может быть полезной из вспомогательных методов API и, возможно, другой подписи делегатов - для инкапсуляции синтаксиса уведомлений о ключевых словах, чтобы людям не нужно было их дублировать, Для этого: я предлагаю вам зарегистрировать проблему, чтобы она не забывалась.

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

Прежде всего, важно проверить, что события в контекстном меню Redis включены. Например, события должны быть активированы на клавишах типа Set. Это можно сделать с помощью команды CONFIG SET:

CONFIG SET notify-keyspace-events KEs

Как только события в ключевом пространстве активированы, он просто подписывается на канал pub-sub:

using (ConnectionMultiplexer connection = ConnectionMultiplexer.Connect("localhost"))
{
    IDatabase db = connection.GetDatabase();
    ISubscriber subscriber = connection.GetSubscriber();

    subscriber.Subscribe("[email protected]__:*", (channel, value) =>
        {
            if ((string)channel == "[email protected]__:users" && (string)value == "sadd")
            {
                // Do stuff if some item is added to a hypothethical "users" set in Redis
            }
        }
    );
}

Подробнее о событиях с клавишами здесь.