Expand description
§Hero Redis
High-performance Redis-compatible server on redb with vector database support.
§Highlights
- Redis Protocol Compatible - Works with any Redis client
- Dual Authentication - Ed25519 signatures or simple secrets
- Vector Search - HNSW-based similarity search for AI embeddings
- Encrypted Storage - ChaCha20-Poly1305 encryption at rest
- Multi-Database - Up to 1000 databases with per-database ACL
- Rhai Scripting - Embedded scripting for complex operations
§Features
This crate supports feature flags to control which components are compiled:
| Feature | Description | Default |
|---|---|---|
client | Redis client with Ed25519 authentication | Yes |
server | Redis-compatible server with redb backend | No |
rhai | Rhai scripting support for the client | No |
vector | Vector database with HNSW similarity search | No |
full | All features enabled | No |
§Quick Start - Client Only (Default)
[dependencies]
hero_redis = "0.3"ⓘ
use hero_redis::hero_redis_client::{HeroRedisClient, Permission};
// Connect with private key (Ed25519)
let mut client = HeroRedisClient::new("127.0.0.1", 6666, "your_private_key_hex")?;
// Select database
client.select(1)?;
// Simple key-value operations
client.set("name", "Alice")?;
let name = client.get("name")?.unwrap();
// Hashes
client.hset("user:1", "name", "Bob")?;
let user = client.hgetall("user:1")?;
// Lists
client.rpush("queue", "job1")?;
let job = client.lpop("queue")?;
// Admin operations (requires admin privileges)
let db = client.admin().create_database("encryption_key")?;
client.admin().grant_permission(db, &pubkey, Permission::Write)?;§Vector Search
ⓘ
// Create a vector index
client.vector_create("embeddings", 1536, "cosine", None)?;
// Add vectors (supports bulk insert for performance)
client.vector_add("embeddings", 1, &embedding_vec)?;
client.vector_add_batch("embeddings", 1536, &batch_items)?;
// Build index and search
client.vector_build("embeddings")?;
let results = client.vector_search("embeddings", &query_vec, 10)?;§Client with Rhai Scripting
[dependencies]
hero_redis = { version = "0.3", features = ["rhai"] }ⓘ
use hero_redis::hero_redis_rhai::RhaiScriptRunner;
let runner = RhaiScriptRunner::builder()
.host("127.0.0.1")
.port(6666)
.private_key("your_private_key_hex")
.build()?;
runner.run_script("scripts/my_script.rhai")?;§Server Only
[dependencies]
hero_redis = { version = "0.3", default-features = false, features = ["server"] }§Full Build (Everything)
[dependencies]
hero_redis = { version = "0.3", features = ["full"] }§Repository
Source code and issues: https://forge.ourworld.tf/geomind_code/hero_redis
Modules§
- hero_
redis_ client - Hero Redis Client - full-featured client with authentication
- hero_
redis_ login - Hero Redis Login client module for obtaining auth tokens Hero Redis Login Client