From a87ec4dbb55f4d8e67641b05612deb9c4f63226d Mon Sep 17 00:00:00 2001 From: Timur Gordon <31495328+timurgordon@users.noreply.github.com> Date: Wed, 27 Aug 2025 15:39:59 +0200 Subject: [PATCH] add readme --- README.md | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..f78a347 --- /dev/null +++ b/README.md @@ -0,0 +1,83 @@ +# 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 +``` + +### 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 + +### 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 \ No newline at end of file