redis-reservation
v0.4.0
Published
Resource reservation (locking) libraries using a Redis backend, with customizable timeouts and keep-alive support.
Downloads
10
Readme
node-redis-reservation
redis reservations are like locks/mutexes except they can expire.
constructor(by, host, port, heartbeat_interval, lock_ttl, log, password)
Creates a new redis-reservation which includes setting up redis connection credentials.
Arguments
by
- The worker namehost
- Redis host to connect toport
- Redis port to connect toheartbeat_interval
- Renew the lock at everyheartbeat_interval
millisecondslock_ttl
- Renew the lock forlock_ttl
secondslog
- Log to use or else defaults to console.logpassword
- Password to authenticate with redis server
Example
ReserveResource = require 'redis-reservation'
reservation = new ReserveResource
'worker-name',
process.env.REDIS_HOST,
process.env.REDIS_PORT,
10 * 60 * 1000, # 10 minutes
30 * 60 # 30 minutes
# log, # defaults to console.log
# password # defaults to no password (empty string)
lock(resource, callback)
Attempts to lock the resource if it can.
Arguments
resource
- The key to use to uniquely identify this lockcallback(err, lock_status)
-lock_status
istrue
if lock was acquired,false
otherwise.
Example
reservation.lock job_name, (err, lock_status) ->
return err if err?
if lock_status
do_job()
else
console.log 'Reservation already held'
wait_until_lock(resource, callback)
Waits until the lock can be acquired for the resource.
Arguments
resource
- The key to use to uniquely identify this lockcallback(err, reserve_key)
-callback
is called only when the lock can be acquired.reserve_key
is the name of the key in redis that was used to acquire the lock.
Example
reservation.wait_until_lock job_name, (err, reserve_key) ->
return err if err?
do_job()
release(callback)
Releases the lock.
Arguments
callback(err)
- Callback to be called once the lock is released, or error.
Example
reservation.release (err) ->
if err?
console.log 'Could not release lock, maybe the reservation was already lost?'
return err