Redis
 sql >> Database >  >> NoSQL >> Redis

Blocca l'accesso alla chiave Redis (ServiceStack)

Redis è un server asincrono non bloccante, non ci sono semantiche integrate in redis per bloccare su una connessione client fino a quando una chiave è gratuito.

Nota:Redis è un archivio dati NoSQL remoto, quindi qualsiasi blocco implementato che coinvolge redis viene "distribuito" in base alla progettazione. AcquireLock di ServiceStack utilizza la primitiva SETNX di redis blocco della semantica per garantire che solo 1 connessione client abbia il blocco, tutti gli altri client/connessioni rimangono bloccati fino a quando il blocco non è stato liberato utilizzando un moltiplicatore esponenziale di ripetizione dei tentativi per il polling.

Per implementare un blocco distribuito senza polling è necessario creare una soluzione che utilizzi una combinazione di SETNX + supporto Pub/Sub di redis per notificare ai client in attesa che il blocco è stato liberato.