Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Overview

NoKV Logo

NoKV

High-Performance, Cloud-Native Distributed Key-Value Database

CI Coverage Go Report Card Go Reference Mentioned in Awesome DBDB.io

Go Version License DeepWiki

  



🔥 Why NoKV?

NoKV is designed for modern hardware and distributed workloads. It combines the best of academic research (WiscKey, W-TinyLFU) with industrial-grade engineering (Raft, Percolator).

🏎️ Extreme Performance

Lock-light commit queue and Batch WAL writing deliver write throughput that saturates NVMe SSDs.

🧠 Smart Caching

Built-in W-TinyLFU Block Cache (via Ristretto) and HotRing implementation ensure 99% cache hit rates and adapt to skew access patterns.

🌐 Distributed Consistency

Multi-Raft replication for high availability. Percolator model for cross-row ACID transactions. Snapshot Isolation by default.

🔌 Redis Compatible

Drop-in replacement for Redis. Supports the RESP protocol so you can use your existing tools and client libraries.


📊 Performance Benchmark

Latest full baseline (generated on 2026-02-23 with default make bench profile: records=1M, ops=1M, conc=16, value_size=256, workloads A-G, engines NoKV/Badger/Pebble):

WorkloadNoKV (ops/s)Badger (ops/s)Pebble (ops/s)
YCSB-A847,660396,3141,282,218
YCSB-B1,742,820716,1511,941,330
YCSB-C2,070,856826,766847,764
YCSB-D1,754,955842,6372,509,809
YCSB-E205,48941,508554,557
YCSB-F715,946326,3431,123,473
YCSB-G413,521399,405583,584
Click to view full benchmark summary
NoKV    YCSB-A 847660   YCSB-B 1742820  YCSB-C 2070856  YCSB-D 1754955  YCSB-E 205489  YCSB-F 715946  YCSB-G 413521
Badger  YCSB-A 396314   YCSB-B 716151   YCSB-C 826766   YCSB-D 842637   YCSB-E 41508   YCSB-F 326343  YCSB-G 399405
Pebble  YCSB-A 1282218  YCSB-B 1941330  YCSB-C 847764   YCSB-D 2509809  YCSB-E 554557  YCSB-F 1123473 YCSB-G 583584

Raw report: benchmark_results_20260223_195951.txt


🏗️ Architecture

graph TD
    Client["Client / Redis"] -->|RESP Protocol| Gateway["Redis Gateway"]
    Gateway -->|RaftCmd| RaftStore
    
    subgraph "RaftStore (Distributed Layer)"
        RaftStore -->|Propose| RaftLog["Raft Log (WAL)"]
        RaftLog -->|Consensus| Apply["Apply Worker"]
    end
    
    subgraph "Storage Engine (LSM)"
        Apply -->|Batch Set| MemTable
        MemTable -->|Flush| SSTable["SSTables (L0-L6)"]
        SSTable -->|Compact| SSTable
        
        Apply -->|Large Value| VLog["Value Log"]
    end
    
    subgraph "Cache Layer"
        BlockCache["Block Cache (Ristretto)"] -.-> SSTable
        IndexCache["Index Cache (W-TinyLFU)"] -.-> SSTable
    end
Built with ❤️ by feichai0017 and contributors.