< 返回版块

MalikHou 发表于 2024-03-07 20:31

Tags:rust, 日报

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 日报小组 侯盛鑫

社区学习交流平台订阅:

评论区

写评论

还没有评论

1 共 0 条评论, 1 页