Sha256: 445866dc536399cc5b884e584bca3b218c550920f4b1f8ad23b53e3849df214f

Contents?: true

Size: 1.23 KB

Versions: 5

Compression:

Stored size: 1.23 KB

Contents

redis-lock
==========

Requires the redis gem.  Including this in your project will give you additional locking abilities on any instance of a redis connection you create.

Installation
------------
	
	gem install redis-lock

Usage
-----

	require 'redis'
	require 'redis-lock # This will automatically include Lock into the Redis class.

Here's a little example of what you can do with it:

	timeout = 10 # measured in seconds
	max_attempts = 100 # number of times the action will attempt to lock the key before raising an exception
	
	$redis = Redis.new
	
	$redis.lock('beers_on_the_wall', timeout, max_attempts)
	# Now no one can acquire a lock on 'beers_on_the_wall'
	
	$redis.unlock('beers_on_the_wall')
	# Other processes can now acquire a lock on 'beers_on_the_wall'
	
For convenience, there is also a `lock_with_update` function that accepts a block.  It handles the locking and unlocking for you.

	$redis.lock_for_update('beers_on_the_wall') do
		$redis.multi do
			$redis.set('sing', 'take one down, pass it around.')
			$redis.decr('beers_on_the_wall')
		end
	end
	
Additional Notes
----------------

This gem basically implements the algorithm described here: http://redis.io/commands/setnx

Author
------

Patrick Tulskie; http://patricktulskie.com

Version data entries

5 entries across 5 versions & 2 rubygems

Version Path
redis-lock-0.2.0 README.md
redis-lock-0.1.2 README.md
redis-lock-0.1.1 README.md
jashmenn-redis-lock-0.1.1 README.md
redis-lock-0.1.0 README.md