3个不稳定版本

0.3.0 2023年6月22日
0.2.2 2023年1月10日
0.2.1 2023年1月10日
0.1.0 2023年1月9日

#17#mongodb

MIT 协议

13KB
230

在MongoDB中实现分布式互斥锁。

Crates.io docs.rs

该库仅包含同步实现。如果您需要异步版本,请使用mongo-lock-async库。

该实现依赖于系统时间。请确保您的服务器上NTP客户端配置正确。

安装

将此库添加到Cargo.toml

[dependencies]
mongo_lock = "0"

使用

fn main() {
    let mongo = mongodb::sync::Client::with_uri_str("mongodb://127.0.0.1").unwrap();

    // We need to ensure that mongodb collection has a proper index.
    mongo_lock::prepare_database(&mongo).unwrap();

    if let Ok(Some(lock)) =
        mongo_lock::Lock::try_acquire(
            &mongo,
            "my-key",
            std::time::Duration::from_secs(30)
        )
    {
        println!("Lock acquired.");

        // The lock will be released automatically after leaving the scope.
    }
}

依赖

~24–35MB
~656K SLoC