Redis in ruby chapter 4 adding the missing options to the set command.
Ruby redis setnx.
Return value type.
This command is equivalent to executing the following commands.
Set mykey value expire mykey seconds.
Ok if the value is set to key or null if the value does not set.
Setex set with expire.
Now you re ready to start using redis.
The redis setex command is used to set some string value with specified timeout in seconds in redis key.
The crashed client c3 still holds it so redis will reply with 0 to c4.
Psetex set with milliseconds expire.
A ruby client that tries to match redis api one to one while still providing an idiomatic interface.
Supports both blocking and non blocking semantics.
There are a few gems available.
C4 sends get lock foo to check if the lock expired.
There is demand for additional variants such as setexnx becuase it is a pretty common pattern in caching and sessions handling to set an object only if not already inside the cache and setting it with an expire.
Set is one of the most used redis commands and has many variants.
Distributed mutex in ruby using redis.
Setex key name timeout value available since.
If it is not it will sleep for some time and retry from the start.
In the following example only one thread process server can enter the locked block at one time.
Setnx set if not exists.
See rubydoc info for the api docs of the latest published gem.
The idea was taken from the official setnx doc.
You may have to run redis server on another terminal to start the server before you can connect to it.
Gem install redis you can connect to redis by instantiating the redis class.
C4 sends setnx lock foo in order to acquire the lock.