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