Files
herodb/docs/cmds.md
2025-08-23 04:58:41 +02:00

4.1 KiB

Backend Support

HeroDB supports two storage backends, both with full encryption support:

  • redb (default): Full-featured, optimized for production use
  • sled: Alternative embedded database with encryption support

Starting HeroDB with Different Backends

# Use default redb backend
./target/release/herodb --dir /tmp/herodb_redb --port 6379

# Use sled backend
./target/release/herodb --dir /tmp/herodb_sled --port 6379 --sled

# Use redb with encryption
./target/release/herodb --dir /tmp/herodb_encrypted --port 6379 --encrypt --key mysecretkey

# Use sled with encryption
./target/release/herodb --dir /tmp/herodb_sled_encrypted --port 6379 --sled --encrypt --key mysecretkey

Command Support by Backend

Command Category redb sled Notes
Strings
SET Full support
GET Full support
DEL Full support
EXISTS Full support
INCR/DECR Full support
MGET/MSET Full support
Hashes
HSET Full support
HGET Full support
HGETALL Full support
HDEL Full support
HEXISTS Full support
HKEYS Full support
HVALS Full support
HLEN Full support
HMGET Full support
HSETNX Full support
HINCRBY/HINCRBYFLOAT Full support
HSCAN Full support with pattern matching
Lists
LPUSH/RPUSH Full support
LPOP/RPOP Full support
LLEN Full support
LRANGE Full support
LINDEX Full support
LTRIM Full support
LREM Full support
BLPOP/BRPOP Blocking operations not in sled
Expiration
EXPIRE Full support in both
TTL Full support in both
PERSIST Full support in both
SETEX/PSETEX Full support in both
EXPIREAT/PEXPIREAT Full support in both
Scanning
KEYS Full support with patterns
SCAN Full cursor-based iteration
HSCAN Full cursor-based iteration
Transactions
MULTI/EXEC/DISCARD Only supported in redb
Encryption
Data-at-rest encryption Both support age encryption
AGE commands Both support AGE crypto commands
Full-Text Search
FT.CREATE Create search index with schema
FT.ADD Add document to search index
FT.SEARCH Search documents with query
FT.DEL Delete document from index
FT.INFO Get index information
FT.DROP Drop search index
FT.ALTER Alter index schema
FT.AGGREGATE Aggregate search results

Performance Considerations

  • redb: Optimized for concurrent access, better for high-throughput scenarios
  • sled: Lock-free architecture, excellent for specific workloads

Encryption Features

Both backends support:

  • Transparent data-at-rest encryption using the age encryption library
  • Per-database encryption (databases >= 10 are encrypted when --encrypt flag is used)
  • Secure key derivation using the master key

Backend Selection Examples

# Example: Testing both backends
redis-cli -p 6379 SET mykey "redb value"
redis-cli -p 6381 SET mykey "sled value"

# Example: Using encryption with both
./target/release/herodb --port 6379 --encrypt --key secret123
./target/release/herodb --port 6381 --sled --encrypt --key secret123

# Both support the same Redis commands
redis-cli -p 6379 HSET user:1 name "Alice" age "30"
redis-cli -p 6381 HSET user:1 name "Alice" age "30"

# Both support SCAN operations
redis-cli -p 6379 SCAN 0 MATCH user:* COUNT 10
redis-cli -p 6381 SCAN 0 MATCH user:* COUNT 10

Migration Between Backends

To migrate data between backends, use Redis replication or dump/restore:

# Export from redb
redis-cli -p 6379 --rdb dump.rdb

# Import to sled
redis-cli -p 6381 --pipe < dump.rdb