Struct redlock::RedLock [] [src]

pub struct RedLock {
    pub servers: Vec<Client>,
    // some fields omitted
}

The lock manager.

Implements the necessary functionality to acquire and release locks and handles the Redis connections.

Fields

servers

List of all Redis clients

Methods

impl RedLock
[src]

fn new(uris: Vec<&str>) -> RedLock

Create a new lock manager instance, defined by the given Redis connection uris. Quorum is defined to be N/2+1, with N being the number of given Redis instances.

Sample URI: "redis://127.0.0.1:6379"

fn get_unique_lock_id(&self) -> Result<Vec<u8>>

Get 20 random bytes from /dev/urandom.

fn set_retry(&mut self, count: u32, delay: u32)

Set retry count and retry delay.

Retry count defaults to 3. Retry delay defaults to 200.

fn lock<'a>(&'a self, resource: &'a [u8], ttl: usize) -> Option<Lock>

Acquire the lock for the given resource and the requested TTL.

If it succeeds, a Lock instance is returned, including the value and the validity time

If it fails. None is returned. A user should retry after a short wait time.

fn unlock(&self, lock: &Lock)

Unlock the given lock.

Unlock is best effort. It will simply try to contact all instances and remove the key.