4 个版本 (2 个重大更改)
0.4.0 | 2024 年 7 月 4 日 |
---|---|
0.3.0 | 2023 年 6 月 22 日 |
0.2.2 | 2023 年 1 月 10 日 |
0.1.0 |
|
#252 在 并发
每月 123 次下载
12KB
229 代码行
在 MongoDB 中实现分布式互斥锁。
此 crate 仅包含异步实现。如果您需要同步版本,请使用 mongo-lock
crate。
此实现依赖于系统时间。请确保您的服务器上的 NTP 客户端配置正确。
安装
将此 crate 添加到 Cargo.toml
[dependencies]
mongo_lock_async = "0"
使用方法
#[tokio::main]
async fn main() {
let mongo = mongodb::Client::with_uri_str("mongodb://127.0.0.1").await.unwrap();
// We need to ensure that mongodb collection has a proper index.
mongo_lock_async::prepare_database(&mongo).await.unwrap();
if let Ok(Some(lock)) =
mongo_lock_async::Lock::try_acquire(
&mongo,
"my-key",
std::time::Duration::from_secs(30)
).await
{
println!("Lock acquired.");
// Release the lock before ttl expires to allow others to acquire it.
lock.release().await.ok();
}
}
依赖项
~15–26MB
~400K SLoC