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"
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 async fn unlock(&self, lock: &Lock<'_>)
pub async 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.
Sourcepub async fn lock(
&self,
resource: &[u8],
ttl: usize,
) -> Result<Lock<'_>, RedLockError>
pub async fn lock( &self, resource: &[u8], ttl: usize, ) -> Result<Lock<'_>, RedLockError>
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.