91 lines
2.3 KiB
Markdown
91 lines
2.3 KiB
Markdown
# HeroDB
|
|
|
|
Redis-compatible database server with encryption and AGE cryptographic operations.
|
|
|
|
## Features
|
|
|
|
- Redis protocol compatibility
|
|
- String, hash, and list data types
|
|
- Key expiration and persistence
|
|
- Database encryption with ChaCha20-Poly1305
|
|
- AGE encryption/decryption operations
|
|
- Digital signatures with Ed25519
|
|
- Persistent storage using redb
|
|
|
|
## Installation
|
|
|
|
```bash
|
|
cargo build --release
|
|
```
|
|
|
|
## Usage
|
|
|
|
```bash
|
|
./target/release/herodb --dir /path/to/db --port 6379
|
|
```
|
|
|
|
## RPC Server
|
|
|
|
HeroDB includes an optional JSON-RPC 2.0 management server for database administration tasks. Enable it with the `--enable-rpc` flag and specify the port with `--rpc-port` (default: 8080).
|
|
|
|
For a complete list of available RPC commands and usage examples, see [RPC_COMMANDS.md](RPC_COMMANDS.md).
|
|
|
|
### Options
|
|
|
|
- `--dir`: Database directory (required)
|
|
- `--port`: Server port (default: 6379)
|
|
- `--debug`: Enable debug logging
|
|
- `--encrypt`: Enable database encryption
|
|
- `--encryption-key`: Master encryption key for encrypted databases
|
|
- `--enable-rpc`: Enable RPC management server
|
|
- `--rpc-port`: RPC server port (default: 8080)
|
|
|
|
### Examples
|
|
|
|
```bash
|
|
# Basic server
|
|
herodb --dir ./data
|
|
|
|
# Encrypted database
|
|
herodb --dir ./data --encrypt --encryption-key "your-key"
|
|
|
|
# Custom port with debug
|
|
herodb --dir ./data --port 7000 --debug
|
|
```
|
|
|
|
## Redis Commands
|
|
|
|
Supports standard Redis commands including:
|
|
|
|
- **Strings**: GET, SET, MGET, MSET, INCR, DEL
|
|
- **Hashes**: HGET, HSET, HGETALL, HDEL, HEXISTS
|
|
- **Lists**: LPUSH, RPUSH, LPOP, RPOP, LLEN, LRANGE
|
|
- **Keys**: KEYS, SCAN, EXISTS, EXPIRE, TTL
|
|
- **Transactions**: MULTI, EXEC, DISCARD
|
|
- **Server**: PING, ECHO, INFO, CONFIG
|
|
|
|
## AGE Commands
|
|
|
|
Extended commands for cryptographic operations:
|
|
|
|
- **Key Generation**: `AGE GENENC`, `AGE GENSIGN`, `AGE KEYGEN`
|
|
- **Encryption**: `AGE ENCRYPT`, `AGE DECRYPT`, `AGE ENCRYPTNAME`
|
|
- **Signing**: `AGE SIGN`, `AGE VERIFY`, `AGE SIGNNAME`
|
|
- **Management**: `AGE LIST`
|
|
|
|
## Client Usage
|
|
|
|
Connect using any Redis client:
|
|
|
|
```bash
|
|
redis-cli -p 6379 SET key value
|
|
redis-cli -p 6379 GET key
|
|
redis-cli -p 6379 AGE GENENC
|
|
```
|
|
|
|
## Architecture
|
|
|
|
- **Storage**: redb embedded database
|
|
- **Protocol**: Redis RESP protocol over TCP
|
|
- **Encryption**: ChaCha20-Poly1305 for data, AGE for operations
|
|
- **Concurrency**: Tokio async runtime |