Scenarios
Pick a key/value engine by what your workload does most: read-heavy, write-ingest, mixed read-update, durable writes, ordered scans, smallest footprint, or a networked Redis-compatible server. Each scenario has real numbers.
The fastest way to pick an engine is to name what your workload does most, then read the one scenario that matches. Each page below states the question, names the winners with real numbers, and says plainly what to avoid and why.
The first six pages are the embedded engines, and their throughput figures are operations per second on an Apple M4 laptop (10 cores, 24 GB), 1 KB values, 8 concurrent clients. The read and mixed pages use 100,000 keys held in cache; the ingest and footprint pages use 300,000 keys written out to disk, so each table names its own setup. The last page is a different class, the Redis-compatible servers reached over a socket, and it names its own machines and clients.
| Scenario | The question | Top picks |
|---|---|---|
| Read-heavy | Mostly reading keys you already wrote | tamnd/kv, pogreb, buntdb |
| Write ingest | A firehose of new keys | tamnd/kv, badger, pebble |
| Mixed read-update | Reads and updates in roughly equal measure | tamnd/kv, pebble, badger |
| Durable writes | Every write must survive a crash | badger, sqlite |
| Range scans | Walking keys in sorted order | bbolt, pebble, goleveldb |
| Smallest footprint | Least disk per byte stored | goleveldb, pebble |
| Redis-compatible | A networked RESP store, not an in-process library | kv-redis, valkey, redis |
If you are not sure which one you are, you are probably mixed read-update: most real services read and write in roughly equal measure. Start there.