Docs
Getting Started
Getting Started
Get SoliKV up and running in minutes
Prerequisites
- 01. Linux/macOS
- 02. curl or wget (for binary install)
- 03. redis-cli (optional, for testing)
For building from source: Rust 1.75+ with cargo
Quick Install
Binary
# Install to ~/.local/bin
curl -sSL https://raw.githubusercontent.com/solisoft/kv/main/install.sh | sh
# Or install system-wide (requires sudo)
curl -sSL https://raw.githubusercontent.com/solisoft/kv/main/install.sh | sh -s -- --system
# Verify installation
solikv --version
Docker
# Pull and run
docker run -p 6379:6379 -p 5020:5020 -v ./data:/data ghcr.io/solisoft/kv:latest
# Or with custom config
docker run -p 6379:6379 -p 5020:5020 -v ./data:/data \
ghcr.io/solisoft/kv:latest --shards 4 --appendfsync always
Build
Terminal
# Clone the repository
git clone https://github.com/solisoft/kv.git
# Build in release mode
cd kv && cargo build --release
# Binary is at target/release/solikv
Run
# Start the server (RESP on port 6379, REST on port 5020)
./target/release/solikv
SoliKV starting with 8 shards, RESP on port 6379, REST on port 5020
AOF enabled (Everysec fsync) at "data/appendonly.aof"
# Verify it's running
redis-cli PING
PONG
Quick Test
redis-cli
# Set and get a key
127.0.0.1:6379> SET greeting "hello world"
OK
127.0.0.1:6379> GET greeting
"hello world"
# Set with TTL (expires in 60 seconds)
127.0.0.1:6379> SET session:abc token123 EX 60
OK
127.0.0.1:6379> TTL session:abc
(integer) 60
# Atomic counter
127.0.0.1:6379> INCR page:views
(integer) 1
# Multi-key operations
127.0.0.1:6379> MSET a 1 b 2 c 3
OK
127.0.0.1:6379> KEYS *
1) "greeting"
2) "a"
3) "b"
4) "c"
5) "page:views"
REST API Quick Test
# Set a key via REST
curl -X PUT http://localhost:5020/kv/mykey \
-H "Content-Type: application/json" \
-d '{"value":"hello"}'
{"result":"OK"}
# Get a key via REST
curl http://localhost:5020/kv/mykey
{"result":"hello"}
CLI Options
| Flag | Default | Description |
|---|---|---|
| --port | 6379 | RESP2 TCP server port |
| --rest-port | 5020 | REST API port |
| --bind | 0.0.0.0 | Bind address |
| --shards | 0 (auto) | Number of shards (0 = number of CPU cores) |
| --dir | data | Data directory for persistence files |
| --dbfilename | dump | RDB snapshot base filename |
| --appendonly | true | Enable append-only file persistence |
| --appendfsync | everysec | AOF fsync policy: always, everysec, no |
| --log-level | info | Log level (trace, debug, info, warn, error) |
| --import-redis-rdb | — | Path to a Redis dump.rdb file to import at startup |
| --requirepass | — | Require password for client authentication (RESP AUTH + REST Bearer token) |
| --replicaof | — | Become replica of master at HOST:PORT |
| --generate-master-keyfile | — | Generate master.keyfile in data dir and exit |
| --daemon, -d | false | Run as daemon in background |
| --cluster-enabled | false | Enable Redis Cluster-compatible mode |