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

Bloquear o acesso à chave Redis (ServiceStack)


O Redis é um servidor assíncrono sem bloqueio, não há semântica incorporada ao redis para bloquear em uma conexão de cliente até que uma chave é grátis.

Observação:o Redis é um armazenamento de dados NoSQL remoto, portanto, qualquer bloqueio que você implementar envolvendo redis é 'distribuído' por design. O AcquireLock do ServiceStack usa o primitivo SETNX do redis lock semântica para garantir que apenas 1 conexão de cliente tenha o bloqueio, todos os outros clientes/conexões permanecerão bloqueando até que o bloqueio seja liberado usando um multiplicador de back-off de repetição exponencial para pesquisar.

Para implementar um bloqueio distribuído sem sondagem, você precisaria criar uma solução que usasse uma combinação de SETNX + suporte a Pub/Sub do redis para notificar os clientes em espera de que o bloqueio foi liberado.