pub struct MultiResourceLock { /* private fields */ }
Expand description
A distributed mutual exclusion lock backed by Redis.
Supports exclusion based on multiple resources and partial overlaps.
E.g. a lock on resources ["a", "b"]
will block a lock on ["a"]
or ["b", "c"]
.
Implementations§
source§impl MultiResourceLock
impl MultiResourceLock
sourcepub fn new(client: &Client) -> RedisResult<Self>
pub fn new(client: &Client) -> RedisResult<Self>
sourcepub fn acquire(
&mut self,
resources: &[String],
expiration: Duration,
timeout: Duration,
sleep: Duration,
) -> RedisResult<Option<String>>
pub fn acquire( &mut self, resources: &[String], expiration: Duration, timeout: Duration, sleep: Duration, ) -> RedisResult<Option<String>>
Attempts to acquire the lock blocking up to expiration
until the lock can be acquired.
Returns None
when it times out.
§Errors
When MultiResourceLock::try_acquire
errors.
sourcepub fn try_acquire(
&mut self,
resources: &[String],
expiration: Duration,
) -> RedisResult<Option<String>>
pub fn try_acquire( &mut self, resources: &[String], expiration: Duration, ) -> RedisResult<Option<String>>
Attempts to acquire the lock returning immediately if it cannot be immediately acquired.
§Errors
- When the
acquire_lock
function is missing from the Redis instance.
sourcepub fn release(&mut self, lock_id: &str) -> RedisResult<usize>
pub fn release(&mut self, lock_id: &str) -> RedisResult<usize>
Releases a held lock.
§Errors
- When the
release_lock
function is missing from the Redis instance. - When
lock_id
is does not refer to a held lock.
sourcepub fn try_lock(
&mut self,
resources: &[String],
expiration: Duration,
) -> RedisResult<Option<MultiResourceGuard<'_>>>
pub fn try_lock( &mut self, resources: &[String], expiration: Duration, ) -> RedisResult<Option<MultiResourceGuard<'_>>>
Attempts to acquire the lock returning immediately if it cannot be immediately acquired.
§Errors
When MultiResourceLock::try_acquire
errors.
sourcepub fn lock(
&mut self,
resources: &[String],
expiration: Duration,
timeout: Duration,
sleep: Duration,
) -> RedisResult<Option<MultiResourceGuard<'_>>>
pub fn lock( &mut self, resources: &[String], expiration: Duration, timeout: Duration, sleep: Duration, ) -> RedisResult<Option<MultiResourceGuard<'_>>>
Attempts to acquire the lock blocking up to expiration
until the lock can be acquired.
Returns None
when it times out.
§Errors
When MultiResourceLock::acquire
errors.