38 个版本
0.0.14 | 2024 年 6 月 26 日 |
---|---|
0.0.13 | 2024 年 3 月 29 日 |
0.0.11 | 2023 年 12 月 19 日 |
0.0.9 | 2023 年 9 月 1 日 |
0.0.0-alpha9 | 2020 年 3 月 9 日 |
在 并发 中排名第 153
每月下载量 42,273
170KB
3.5K SLoC
Þingvellir (thingvellir
)
一个 Rust 库,允许你构建内存中的读写透传缓存。它底层使用基于 tokio
的分片、无共享actor模型。
给定一个结构体和一个上游,这个 抽象 处理数据的加载和提交。 thingvellir
的目的是放在数据库(例如 cassandra
或 scylladb
)前面,提供一个在数据库内部对“热点”数据进行内存缓存的方法。
thingvellir
提供了键值接口,抽象了数据库加载和持久化操作,允许你将业务逻辑编写为可以持久化到数据库的简单结构体。开箱即用,thingvellir
提供了一个上游实现,该实现将结构体持久化到 cassandra,使用简单的键值模式,其中值是使用 serde
序列化的 CBOR 形式。
thingvellir
处理对象过期,并允许配置有界内存数据集(thingvellir
将缓存多少键可以配置),并且键在过期时可以被删除(我们使用类似于 Redis 的随机过期探测),并且还维护一个概率 LRU 以在缓存满时删除键。
thingvellir
合并了对上游数据存储的读取和写入。如果你的数据模型适合延迟写入持久性(例如,你可以接受在数据提交到上游之前节点崩溃导致数据丢失的计数器),或者一个“热点”键可能被频繁查询,或者看到查询的突发,thingvellir
将确保上游只看到一个读取查询。写入持久性可以根据每个突变进行配置,允许 立即 提交或 延迟 提交(取决于你的应用程序可以容忍多少数据丢失。)
依赖项
~5–34MB
~496K SLoC