1 个不稳定版本
0.1.0 | 2022年8月10日 |
---|
#1990 在 数据库接口
22KB
457 行
Cock Lock (Cockroach Locks)
这个项目没有更好的名字了
为CockroachDB和Postgres编写的纯Rust分布式锁定系统(DLS)。这个项目的动机是创建一个不使用Redis Redlock协议的DLS(因为我看到一些人在互联网上争论这个问题)。此项目还包含比传统Redlock实现更多的功能。
安装
尚未发布到crates.io,请稍后再查看。
用法
use std::thread::sleep;
use std::time::Duration;
use cocklock::{errors::CockLockError::NotAvailable, CockLock};
fn my_task() {
println!("Doing my task.");
}
fn main() {
let mut locker = CockLock::builder()
.with_connection_strings(vec!["postgres://user:pass@localhost:5432/db"])
.build()
.unwrap();
loop {
match locker.lock("task", 10_000) {
Ok(_) => my_task(),
Err(err) => match err {
NotAvailable => println!("Someone else is doing my task!"),
_ => println!("Uh oh, some other error occurred: {err}")
},
};
sleep(Duration::from_millis(1_000));
}
}
许可证
依赖项
~7–18MB
~280K SLoC