relock
Distributed async locking using Redis
Description
Distributed locks are a very useful primitive in many environments where different processes must operate with shared resources in a mutually exclusive way. This crate implements the "Correct implementation with a single instance" algorithm described in the Redis documentation.
Install
Add relock
as a dependency in the cargo.toml file of your project:
[]
= "0.1.2"
If you have cargo-edit utility tool installed, use:
Usage
lock
use Relock;
let relock = new.unwrap;
let lock_key = "foo-lock";
let time_to_live = 10_000;
let retry_count = 5;
let retry_delay = 200;
// Acquire the lock. If the lock is bussy, this method will retry
// `retry_count` times with a delay of `retry_delay` milliseconds between
// each retry.
let lock = relock.lock.await.unwrap;
// Do work.
relock.unlock.await.unwrap;
try_lock
use Relock;
let relock = new.unwrap;
let lock_key = "foo-try-lock";
let time_to_live = 10_000;
// Acquire the lock. If the lock is bussy, this method will return a Lock
// Error. Consider waiting a bit before retrying or use `lock` method instead.
let lock = relock.try_lock.await.unwrap;
// Do work.
relock.unlock.await.unwrap;