#redis #distributed #locking #redlock #distributed-lock

redlock-async

Implementation of the distributed locking mechanism built on top of Async Redis

3 releases

0.0.3 Sep 9, 2022
0.0.2 Sep 9, 2022
0.0.1 Sep 9, 2022

#1808 in Database interfaces

Download history 6/week @ 2023-12-18 2/week @ 2023-12-25 11/week @ 2024-01-01 13/week @ 2024-01-08 77/week @ 2024-01-15 22/week @ 2024-01-22 24/week @ 2024-01-29 45/week @ 2024-02-05 9/week @ 2024-02-12 71/week @ 2024-02-19 172/week @ 2024-02-26 76/week @ 2024-03-04 161/week @ 2024-03-11 36/week @ 2024-03-18 39/week @ 2024-03-25

315 downloads per month

BSD-3-Clause

17KB
328 lines

redlock-async-rs - Async Distributed locks with Redis

GitHub Workflow Status Crates.io

This is an implementation of Redlock, the distributed locking mechanism built on top of Redis.

It is a fork of existing redlock-rs with async built on top of it.

Build

cargo build --release

Usage

use redlock::RedLock;

#[tokio::main]
fn main() {
  let rl = RedLock::new(vec!["redis://127.0.0.1:6380/", "redis://127.0.0.1:6381/", "redis://127.0.0.1:6382/"]);

  let lock;
  loop {
    match rl.lock("mutex".as_bytes(), 1000).await {
      Ok(l) => { lock = l; break }
      Err(_) => ()
    }
  }

  // Critical section
  rl.unlock(&lock).await;
}

Tests

Run tests with:

cargo test

Run sample application with:

cargo run --release

Contribute

If you find bugs or want to help otherwise, please open an issue.

License

BSD. See LICENSE.

Dependencies

~11–24MB
~361K SLoC