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.