One reason why Redis has custom locking, instead of using operating system–level locks, language-level locks, and so forth, is a matter of scope. Clients want to have exclusive access to data stored on Redis, so clients need to have access to a lock defined in a scope that all clients can see—Redis.
Redis does have a basic sort of lock already available as part of the command set (SETNX), which we use, but it’s not full-featured and doesn’t offer advanced functionality that users would expect of a distributed lock.
In fact there are two patterns which have emerged for locking in Redis.
- Locking with SETNX
- it’s not full-featured and doesn’t offer advanced functionality
- the distributed locking algorithm.