5 个版本

0.2.0 2021 年 3 月 26 日
0.2.0-alpha.22021 年 3 月 15 日
0.2.0-alpha.12021 年 3 月 8 日
0.1.1 2020 年 11 月 4 日
0.1.0 2020 年 11 月 2 日

#1128 in 异步

每月 22 次下载

MIT/Apache

115KB
2K SLoC

actix-storage-sled

此 crate 提供了基于 sled 数据库的 actix-storage 实现。

请参阅 actix-storage crate 文档以获取使用和用例的详细信息。

此 crate 中有 2 个不同的实现者可用

SledStore

SledStore 是一个简单的存储,没有过期功能。

SledActor

SledActor 是一个完整的过期存储实现,可在 actor 功能下使用。

实现细节

SledActor 是一个在 actix 线程池中运行的 SyncActor,它使用 delay-queue crate 在一个线程内部进行过期通知。

可以指定线程池中使用的实例数。

// You'll need to have the provided sled trait extension in scope
use actix_storage_sled::{actor::ToActorExt, SledConfig};

// Refer to sled's documentation for more options
let sled_db = SledConfig::default().temporary(true);

// Open the database and make an actor(not started yet)
let actor = sled_db.to_actor()?;

let store = actor
            // If you want to scan the database on start for expiration
            .scan_db_on_start(true)
            // If you want the expiration thread to perform deletion instead of soft deleting items
            .perform_deletion(true)
            // Finally start the actor
            .start(THREADS_NUMBER);

重要提示

SledActor 将过期标志存储在数据相同的位置,目前无法将这些标志存储在不同的子树中。正因为如此,如果您想在此 crate 的作用域外访问数据或修改它们,此 crate 还提供了 3 个公共方法,同时曝光了过期标志结构体。

actix_storage_sled::actor::encode 用于对带有过期标志的数据进行编码。

actix_storage_sled::actor::decode 用于解码带有过期标志的数据。

actix_storage_sled::actor::decode_mutdecode 相同,但可变。

actix_storage_sled::actor::ExpiryFlags 过期标志

依赖项

~28MB
~589K SLoC