Redis er en ikke-blokerende asynkronserver, der er ingen semantik indbygget i Redis for at blokere på en klientforbindelse indtil en nøgle er gratis.
Bemærk:Redis er et eksternt NoSQL-datalager, derfor er enhver lås, du implementerer, der involverer redis, 'distribueret' efter design. ServiceStack's AcquireLock bruger redis' primitive SETNX låse semantik for at sikre, at kun 1 klientforbindelse har låsen. Alle andre klienter/forbindelser forbliver blokerende, indtil låsen er blevet frigjort ved at bruge en eksponentiel genforsøgs-back-off multiplikator til at polle.
For at implementere en distribueret lås uden polling skal du oprette en løsning, der bruger en kombination af SETNX + redis's Pub/Sub-understøttelse til at underrette ventende klienter om, at låsen er blevet frigivet.