An embedded LSM-tree key-value store with an optional RESP server.
- WAL + MANIFEST for durability/recovery
- Memtable (skiplist + arena) with background flush pipeline
- SSTables with block index + Bloom filters, optional compression
- Block cache + raw block cache
- Background flush/compaction threads
- RESP server (Redis protocol subset) + header-only client
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j
sudo cmake --install build --prefix /usr/local#include <dkv/db.h>
int main() {
dkv::Options opts;
opts.data_dir = "my-data";
std::unique_ptr<dkv::DB> db;
dkv::DB::Open(opts, db);
db->Put({}, "hello", "world");
std::string value;
db->Get({}, "hello", value);
}#include <dkv/resp_client.h>
int main() {
dkv::RespClient c("127.0.0.1", 6379);
c.kv().SetOk("k", "v");
auto v = c.kv().GetString("k");
}./build/dkv-server --data-dir ./dkv-dataDKV_BUILD_SERVER(default ON): builddkv-serverDKV_BUILD_UTILS(default ON): builddkv-dumpDKV_BUILD_TESTS(default ON): builddkv_testsanddkv-server-load-testDKV_BUILD_BENCHMARKS(default ON): build benchmarksDKV_BUILD_EXAMPLES(default ON): builddkv_exampleanddkv-resp-client-ops
docs/ARCHITECTURE.mddocs/OPTIONS.mddocs/COMPRESSION.mddocs/BENCHMARKS.md
MIT (see LICENSE)