| Crates.io | valkey-module |
| lib.rs | valkey-module |
| version | 0.1.10 |
| created_at | 2024-04-28 14:45:13.727028+00 |
| updated_at | 2025-07-28 18:16:56.182047+00 |
| description | A toolkit for building valkey modules in Rust |
| homepage | |
| repository | https://github.com/valkey-io/valkeymodule-rs |
| max_upload_size | |
| id | 1223293 |
| size | 775,059 |
This crate provides an idiomatic Rust API for the Valkey Modules API. It allows writing Valkey modules in Rust, without needing to use raw pointers or unsafe code. See here for the most recent API documentation.
This repo was forked from redismodule-rs. We appreciate the contributions of the original authors.
cargo build --example hellohello module
valkey-server --loadmodule ./target/debug/examples/libhello.sovalkey-server --loadmodule ./target/debug/examples/libhello.dylibHELLO.MUL 31 11.See the examples directory for some sample modules.
This crate tries to provide high-level wrappers around the standard Valkey Modules API, while preserving the API's basic concepts. Therefore, following the Valkey Modules API documentation will be mostly relevant here as well.
This feature flag is ideal for unit testing where the engine server is not running, and we do not have access to the Vakey engine Allocator; so we can use the System Allocator instead.
To optionally enter the System.alloc code paths in alloc.rs specify this in Cargo.toml of your module:
[features]
enable-system-alloc = ["valkey-module/system-alloc"]
For unit tests with System.alloc use this:
cargo test --features enable-system-alloc
For integration tests with ValkeyAlloc use this:
cargo test
This feature flag is useful in case you have a Module that needs to be loaded on both Valkey and Redis Servers. In this case, you can use the use-redismodule-api flag so that the Module is loaded using the RedisModule API Initialization for compatibility.
To use this feature by conditionally, specify the following in your Cargo.toml:
[features]
use-redismodule-api = ["valkey-module/use-redismodule-api"]
default = []
cargo build --release --features use-redismodule-api