Redis · Lección 10
¿Cómo se implementa un lock con Redis y qué límites tiene?
Basta con SET clave valor sin NX ni TTL: si el cliente falla, el lock se libera solo cuando el servidor detecta que el cliente se ha desconectado
Se toma con SET clave token NX PX ttl (token único, solo se crea si no existe y caduca) y se libera comprobando de forma atómica, con un script, que el token sigue siendo el propio; aun así, si el trabajo dura más que el TTL el lock expira y dos clientes pueden creerse dueños, por lo que para exclusión estricta hace falta un fencing token o un sistema de consenso
Un lock con TTL garantiza siempre exclusión mutua estricta: el cliente nunca puede perder el lock mientras su trabajo siga en ejecución
Liberar el lock con un DEL sin comprobar el valor es seguro, porque ningún otro cliente puede haber adquirido el lock mientras tanto
Redis · Lección 10
Completa el código
La opción que crea la clave solo si no existe es
Revisa: NX.
Redis · Lección 10
¿Por qué liberar un lock sin comprobar el token puede romper la exclusión de otro cliente?
Pista: el lock original pudo expirar y otro cliente adquirirlo, y un DEL ciego eliminaría el lock del nuevo dueño; el token único permite comprobar que el lock sigue siendo el propio, y la comprobación y el borrado deben ser atómicos.
✓
¡Lección completada!
Bloqueos distribuidos con Redis
0
XP ganado
3
Vidas restantes