#module #redis #redis-module #raw-pointers #redis-plugin

iredismodule

用于在 Rust 中构建 Redis 模块的工具包

8 个版本

0.3.0 2020 年 5 月 25 日
0.2.2 2020 年 5 月 17 日
0.1.3 2020 年 5 月 15 日

178FFI

每月下载 21

MIT 许可证

145KB
2.5K SLoC

iredismodule

此 crate 提供了 Redis 模块 API 的 Rust 风格 API。它允许在不使用原始指针或不安全代码的情况下使用 Rust 编写 Redis 模块。

入门

use iredismodule_macros::rcmd;
use iredismodule::prelude::*; 

/// Define command
#[rcmd("simple.hello", "readonly", 0, 0, 0)] 
fn simple_hello(ctx: &mut Context, _args: Vec<RStr>) -> RResult {
    let db = ctx.get_select_db();
    Ok(db.into())
}

// Register module
define_module! {
    name: "simple",
    version: 1,
    data_types: [],
    init_funcs: [],
    commands: [
        simple_hello_cmd,
    ]
}

运行示例模块

  1. 安装 Rust
  2. 安装 Redis,通常使用您喜欢的包管理器(Mac 上的 Homebrew,Linux 上的 APT 或 YUM)
  3. 运行 cargo build --example helloworld
  4. 使用 helloworld 模块启动 redis 服务器
    • Linux: redis-server --loadmodule ./target/debug/examples/helloworld.so
    • Mac: redis-server --loadmodule ./target/debug/examples/helloworld.dylib
  5. 打开 Redis CLI,并运行 HELLO.SIMPLE

编写自己的模块

查看 示例 目录以获取一些示例模块。

此 crate 尝试在保留 API 基本概念的同时,提供标准 Redis 模块 API 的高级包装。因此,遵循 Redis 模块 API 文档在这里也将非常相关。

无运行时依赖

~0–2MB
~37K SLoC