Docs Features Benchmark GitHub Get Started →

A faster way to
store key-value data

Redis-compatible key-value store built from scratch in Go. Sharded actor model. Lock-free execution. 161K SET/sec.

Get Started View on GitHub
redis-cli -p 6379
# works with any Redis client
SET user:1 "john doe"
OK
EXPIRE user:1 3600
(integer) 1
TTL user:1
(integer) 3598
INFO
commands_per_second:161030
Works with your existing Redis clients
Drop-in Redis replacement · Zero config

Built for speed,
designed for clarity

Every design decision in VeloxDB optimizes for throughput, predictability, and correctness.

Sharded Actor Model
Keys distributed across N shards via FNV hash. Each shard runs a single-threaded event loop — parallel execution with zero locks.
🔁
Redis Compatible
Full RESP protocol support. Works with redis-cli and any standard Redis client out of the box — zero migration cost.
💾
AOF Persistence
Every write command appended to disk in RESP format. On restart, the full pipeline replays the log — crash recovery with no extra code.
📊
Atomic Metrics
Lock-free atomic counters track commands/sec, per-command counts, and uptime. Query live stats with the INFO command.
🚀
Pipeline Support
Pipeline-aware buffered writer flushes once per batch, not per command. 7x throughput improvement under pipelined workloads.
⚙️
Zero Config
Sensible defaults for everything. Override via environment variables — port, shard count, buffer size, AOF path.

87% of Redis.
Pure Go.

Benchmarked against Redis 8.0.3 on the same machine — 50 concurrent clients, 100K requests.

VeloxDB SET 161K/sec
Redis 8.0.3 SET 177K/sec
VeloxDB GET 151K/sec
Redis 8.0.3 GET 175K/sec

Pipelined (16 cmds): VeloxDB hits 952K SET/sec and 1.1M GET/sec — a 7x improvement over non-pipelined.

Command VeloxDB Redis Ratio
SET 161,030/s 177,619/s 90.7%
GET 151,285/s 175,131/s 86.4%
SET 952,381/s 1,538,461/s 61.9%
GET 1,136,363/s 1,923,076/s 59.1%

All supported commands

VeloxDB supports core Redis commands — compatible with any Redis client.

GET SET DEL EXPIRE TTL INFO
GET
Retrieve the value associated with a key. Returns nil if the key does not exist or has expired.
Syntax
GET key
GET foo
"bar"
GET missing
(nil)
Returns: Bulk string reply, or nil when key does not exist
SET
Set the value of a key. If the key already exists, its value is overwritten regardless of type.
Syntax
SET key value
SET name "aritra"
OK
GET name
"aritra"
Returns: Simple string reply OK
DEL
Remove a key from the store. Returns 1 if the key existed and was deleted, 0 if it did not exist.
Syntax
DEL key
DEL foo
(integer) 1
DEL missing
(integer) 0
Returns: Integer reply — 1 if deleted, 0 if key not found
EXPIRE
Set a timeout on a key in seconds. After the timeout, the key is automatically deleted on next access.
Syntax
EXPIRE key seconds
SET session "abc123"
OK
EXPIRE session 3600
(integer) 1
Returns: 1 if timeout set, 0 if key does not exist
TTL
Returns the remaining time to live of a key. Returns -1 if no expiry is set, -2 if the key does not exist.
Syntax
TTL key
TTL session
(integer) 3597
TTL persistent
(integer) -1
Returns: TTL in seconds, -1 (no expiry), or -2 (not found)
INFO
Returns live server statistics — uptime, total commands processed, commands per second, and per-command breakdowns.
Syntax
INFO
INFO
uptime_in_seconds:3600
total_commands:842910
commands_per_second:161030.00
get_commands:421455
set_commands:421455
Returns: Bulk string with server stats

Up and running in
30 seconds

No config files. No Docker required. Just Go.

01
Clone the repo
git clone https://github.com/
AritraC1/veloxdb.git
cd veloxdb
02
Start the server
go run cmd/server/main.go
# Server started on :6379
03
Connect & query
redis-cli -p 6379
# Any Redis client works

Configure with env vars: PORT=6380 NUM_SHARDS=16 go run cmd/server/main.go

View on GitHub