add readme
This commit is contained in:
		
							
								
								
									
										83
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										83
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							| @@ -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 | ||||
		Reference in New Issue
	
	Block a user