pub struct RedLock {
pub servers: Vec<Client>,
/* private fields */
}
Expand description
The lock manager.
Implements the necessary functionality to acquire and release locks and handles the Redis connections.
Fields§
§servers: Vec<Client>
List of all Redis clients
Implementations§
Source§impl RedLock
impl RedLock
Sourcepub fn new<T: AsRef<str> + IntoConnectionInfo>(uris: Vec<T>) -> RedLock
pub fn new<T: AsRef<str> + IntoConnectionInfo>(uris: Vec<T>) -> 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"
pub fn with_client(server: Client) -> RedLock
Sourcepub fn with_clients(servers: Vec<Client>) -> RedLock
pub fn with_clients(servers: Vec<Client>) -> RedLock
Create a new lock manager instance, defined by the given Redis client instance. Quorum is defined to be N/2+1, with N being the number of given client instances.
Sourcepub fn get_unique_lock_id(&self) -> Result<Vec<u8>>
pub fn get_unique_lock_id(&self) -> Result<Vec<u8>>
Get 20 random bytes from /dev/urandom
.
Sourcepub fn set_retry(&mut self, count: u32, delay: u32)
pub 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
.
Sourcepub fn lock(
&self,
resource: &[u8],
ttl: usize,
) -> Result<Option<Lock<'_>>, RedisError>
pub fn lock( &self, resource: &[u8], ttl: usize, ) -> Result<Option<Lock<'_>>, RedisError>
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
Err(RedisError)
is returned on any Redis error, None
is returned if the lock could
not be acquired and the user should retry