5 个版本
0.2.0 | 2021 年 3 月 26 日 |
---|---|
0.2.0-alpha.2 | 2021 年 3 月 15 日 |
0.2.0-alpha.1 | 2021 年 3 月 8 日 |
0.1.1 | 2020 年 11 月 4 日 |
0.1.0 | 2020 年 11 月 2 日 |
#1128 in 异步
每月 22 次下载
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_mut
与 decode
相同,但可变。
actix_storage_sled::actor::ExpiryFlags
过期标志
依赖项
~28MB
~589K SLoC