Rust 版本的 PickleDB
PickleDB 是一个用 Rust 编写的轻量级且简单的键值存储,很大程度上受到 Python PickleDB 的启发。PickleDB 有趣且易于使用
PickleDB 使用
use pickledb::{PickleDb, PickleDbDumpPolicy, SerializationMethod};
fn main() {
// create a new DB with AutoDump (meaning every change is written to the file)
// and with Json serialization (meaning DB will be dumped to file as a Json object)
let mut db = PickleDb::new("example.db", PickleDbDumpPolicy::AutoDump, SerializationMethod::Json);
// set the value 100 to the key 'key1'
db.set("key1", &100).unwrap();
// print the value of key1
println!("The value of key1 is: {}", db.get::<i32>("key1").unwrap());
// load the DB from the same file
let db2 = PickleDb::load("example.db", PickleDbDumpPolicy::DumpUponRequest, SerializationMethod::Json).unwrap();
// print the value of key1
println!("The value of key1 as loaded from file is: {}", db2.get::<i32>("key1").unwrap());
}
安装
[dependencies]
pickledb = "0.5.1"
例子
目前 PickleDB 附带了两个示例:
Hello World,展示了 PickleDB 的基本用法:创建新的数据库、从文件加载数据库、获取/设置不同类型的键值对等等;
List展示了如何在 PickleDB 中使用列表:创建新列表、从列表中添加/删除项目、从列表中检索项目、删除列表等。
https://github.com/seladb/pickledb-rs
使用 Tokio 实现不完整的 Redis 客户端和服务器(仅用于学习目的)
mini-redis是使用Tokio构建的Redis客户端和服务器 的不完整、惯用的实现。该项目的目的是提供编写 Tokio 应用程序的更大示例。
免责声明请不要在生产中使用 mini-redis。该项目旨在成为一个学习资源,并省略了 Redis 协议的各个部分,因为实现它们不会引入任何新概念。我们不会添加新功能,因为您的项目需要它们 - 请使用功能齐全的替代方案之一。
为什么选择 Redis
该项目的主要目标是教授 Tokio。要做到这一点,需要一个具有广泛功能的项目,并注重实现的简单性。Redis 是一种内存数据库,提供广泛的功能并使用简单的有线协议。广泛的功能允许在“现实世界”环境中演示许多 Tokio 模式。
Redis 有线协议文档可以在此处找到;
Redis 提供的命令集可以 在此处找到。
运行
该存储库提供服务器、客户端库和一些用于与服务器交互的客户端可执行文件。
启动服务器:
RUST_LOG=debug cargo run --bin mini-redis-server
该 tracing crate 用于提供结构化日志。您可以替换debug为所需的日志级别。然后,在不同的终端窗口中,可以执行各种客户端示例。例如:
cargo run --example hello_world
此外,还提供 CLI 客户端来从终端运行任意命令。服务器运行时,将进行以下工作:
cargo run --bin mini-redis-cli set foo bar
cargo run --bin mini-redis-cli get foo
mini-redis 目前支持的命令
PING
GET
SET
PUBLISH
SUBSCRIBE
https://github.com/tokio-rs/mini-redis
From 日报小组 侯盛鑫
社区学习交流平台订阅:
Rustcc论坛: 支持rss
微信公众号:Rust语言中文社区