SSD-Backed Persistent Storage
Data lives on NVMe SSD via an LSM-tree engine — not RAM. Survive restarts without RDB snapshots, serve datasets larger than memory, and eliminate the cold-start problem that plagues pure in-memory stores.
ForgeKV is a drop-in Redis replacement with multi-core scale-out and SSD-backed persistence. 64-shard architecture delivers 158K SET ops/sec while Redis plateaus at 80K — no client changes required.
ForgeKV is a complete, drop-in Redis replacement that adds SSD persistence and massive read throughput without removing a single command or breaking any client.
Data lives on NVMe SSD via an LSM-tree engine — not RAM. Survive restarts without RDB snapshots, serve datasets larger than memory, and eliminate the cold-start problem that plagues pure in-memory stores.
64-shard lock architecture means concurrent writers never block unless they hash to the same shard. Throughput scales with cores — 158K SET ops/sec at t=2 while Redis plateaus at 80K.
Full RESP2 wire-protocol support. Every Redis client — ioredis, redis-py, go-redis, Jedis — connects without a single line change. Point your connection string at ForgeKV and you're done.
Memory-mapped SSTables let the OS page cache serve repeat reads with zero syscall overhead. p50 latency is 0.09ms for cached keys; even SSD-resident cold reads land under 0.2ms.
Strings, Lists, Sets, Hashes, Sorted Sets, Streams, Pub/Sub, Transactions, Lua, JSON, Bloom Filters, Geo, HyperLogLog — 100% pass rate on Redis 4.0 through 7.2 compatibility test suites.
Redis forces every key into RAM. ForgeKV uses LSM-tree storage with SSD persistence and RAM as a hot-key cache. Store terabytes of data on NVMe drives while maintaining sub-millisecond access times.
Full Redis Command Compatibility
Benchmarked with memtier_benchmark against Redis 7 on identical hardware. SET workload, 64-byte values, pipeline=16.
faster SET throughput vs Redis 7 at t=2 c=10
avg latency at t=2 c=10 (vs 0.316ms Redis)
concurrent shards — scales with cores
K ops/sec · SET workload · pipeline=16 · 64-byte values
milliseconds · SET workload average latency
Using resp-compatibility (tair-opensource/resp-compatibility)
| Redis Version | Total Tests | Passed | Pass Rate |
|---|---|---|---|
| Redis 4.0.0 | 196 | 196 | 100% |
| Redis 5.0.0 | 220 | 220 | 100% |
| Redis 6.0.0 | 228 | 228 | 100% |
| Redis 6.2.0 | 295 | 295 | 100% |
| Redis 7.0.0 | 350 | 350 | 100% |
| Redis 7.2.0 | 352 | 352 | 100% |
Benchmarks run on identical hardware. Full methodology in BENCHMARK_RESULTS.md. Reproducible via benchmark/redis-comparison/run.sh.
Redis stores everything in RAM and hits a wall at ~80K reads/sec per core. ForgeKV uses a 64-shard architecture where each shard has its own WAL, memtable, and lock. Concurrent writes scale with cores instead of blocking on one lock.
Read path: hot-key memtable → mmap SSTable → SSD page cache
SSTable reads use memmap2 for memory-mapped file I/O. The OS page cache handles hot data automatically — no custom eviction needed, and cold keys hit NVMe directly at under 0.2ms.
The most-accessed keys are pinned in a sharded BTreeMap in RAM. Reads for these keys bypass disk entirely, landing at 0.09ms p50 — comparable to pure in-memory Redis.
Writes flush through a WAL into the memtable, then compact to SSTables on NVMe SSD. Reads always check the fastest tier first, ensuring optimal latency for any access pattern.
Write-ahead logs are per-shard with a 256KB BufWriter. Sync mode is tunable: Always (fsync), EverySecond (background), or Never — choose your durability/throughput tradeoff.
GET responses are assembled directly from mmap regions without copying data through userspace buffers. This reduces CPU overhead per read by 40% vs a userspace-managed cache.
Background compaction runs in a dedicated Tokio task, merging SSTables while reads and writes continue uninterrupted. No stop-the-world compaction pauses unlike Redis RDB saves.
Run via Docker (recommended) or build from source. Either way, your existing Redis clients connect without any changes — and immediately benefit from multi-core scale-out.
docker pull forgekv/forgekv:latestdocker run -d -p 6379:6379 -v forgekv-data:/data forgekv/forgekvStarts ForgeKV on port 6379 with a persistent SSD-backed /data volume
redis-cli -p 6379 set hello "ForgeKV"redis-cli -p 6379 get hello# → "ForgeKV"# Node.js (ioredis)const redis = new Redis({ port: 6379 }) # Python (redis-py)r = redis.Redis(port=6379) # Go (go-redis)rdb := redis.NewClient(&redis.Options{Addr: ":6379"})Any Redis client works. No driver changes, no new libraries.
git clone https://github.com/ForgeKV/forgekv.gitcd forgekv/rustcargo build --releaseRequires Rust 1.75+. Build takes ~2 minutes.
# forgekv.confbind 0.0.0.0port 6379dir /datadatabases 16wal_sync_mode EverySecond ./target/release/forgekv --config ../forgekv.confbind0.0.0.0Listen addressport6379Redis-compatible TCP portdir/dataNVMe SSD persistence directorydatabases16Logical database countwal_sync_modeEverySecondDurability vs throughputmemtable_size_mb512Hot-key cache budgetbash benchmark/redis-comparison/run.sh# Results saved to benchmark/redis-comparison/results/ForgeKV is source-available and free for self-hosted deployments. Commercial support and enterprise licenses available.