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.