Redis
 sql >> Base de Dados >  >> NoSQL >> Redis

Notificações de keyspace do Redis com StackExchange.Redis


A API de assinante regular deve funcionar bem - não há suposições sobre casos de uso, e isso deve funcionar bem.

No entanto, eu meio que concordo que essa é uma funcionalidade embutida que talvez possa se beneficiar de métodos auxiliares na API e talvez uma assinatura de delegado diferente - para encapsular a sintaxe das notificações do keyapace para que as pessoas não precisem duplicá-la. Para isso:sugiro que você registre um problema para que não seja esquecido.

Exemplo simples de como se inscrever em um evento keyspace


Antes de tudo, é importante verificar se os eventos de keyspace do Redis estão ativados. Por exemplo, os eventos devem ser habilitados em chaves do tipo Set . Isso pode ser feito usando CONFIG SET comando:
CONFIG SET notify-keyspace-events KEs

Depois que os eventos de keyspace estiverem ativados, basta se inscrever no canal 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
            }
        }
    );
}

Saiba mais sobre eventos de keyspace aqui.