sql >> Databasteknik >  >> NoSQL >> Redis

Blockera åtkomst till Redis-nyckel (ServiceStack)

Redis är en icke-blockerande asynkronserver, det finns ingen semantik inbyggd i redis för att blockera på en klientanslutning tills en nyckel är gratis.

Obs:Redis är ett avlägset NoSQL-datalager, därför "distribueras" alla lås du implementerar som involverar redis. ServiceStacks AcquireLock använder redis primitiva SETNX låsning av semantik för att säkerställa att endast en klientanslutning har låset, alla andra klienter/anslutningar förblir blockerade tills låset har frigjorts genom att använda en exponentiell back-off-multiplikator för återförsök för att polla.

För att implementera ett distribuerat lås utan polling måste du skapa en lösning som använder en kombination av SETNX + redis Pub/Sub-stöd för att meddela väntande klienter att låset har frigjorts.



  1. Hur skapar man en egen databas i Redis?

  2. Resque på Heroku cedar stack Antalet arbetare existerar fortfarande efter att arbetaren avslutats

  3. Kombinera två ELLER-frågor med AND i Mongoose

  4. Hur behåller jag has_many :through-relationer när jag serialiserar till JSON och tillbaka i Rails 4.0.3?