Crate hero_redis

Crate hero_redis 

Source
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:

FeatureDescriptionDefault
clientRedis client with Ed25519 authenticationYes
serverRedis-compatible server with redb backendNo
rhaiRhai scripting support for the clientNo
vectorVector database with HNSW similarity searchNo
fullAll features enabledNo

§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)?;
// 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