finds.dev← search

// the find

tidwall/summitdb

★ 1,410 · Go · NOASSERTION · updated Apr 2022

In-memory NoSQL database with ACID transactions, Raft consensus, and Redis API

SummitDB is a Redis-protocol-compatible in-memory database that adds Raft consensus, secondary indexes, spatial queries, and JSON document support on top of BuntDB. It's for teams that want Redis-style simplicity with built-in clustering and stronger consistency guarantees than Redis's primary/replica setup. Think: embedded config stores, game state, small distributed caches that need to survive node failures.

The combination of Raft consensus with a Redis wire protocol is genuinely useful — you get strong consistency without learning a new client library. Secondary indexes via SETINDEX are well-thought-out: you can index arbitrary JSON paths and run range queries or spatial lookups against them, which Redis only approximates with sorted sets and Lua hacks. Fencing tokens are a first-class primitive, which most distributed key-value stores leave as an exercise to the reader. The spatial indexing is up to 20 dimensions using an R-tree, which goes well beyond the Geohash-based GEO commands Redis offers.

Last commit is 2022, and the vendored hashicorp/raft is an old version that predates the v3 API overhaul — any serious adoption would immediately hit dependency rot. The scripting engine is Otto (JS ES5 interpreter in Go), which is also abandoned and doesn't support ES6+; you're stuck writing scripts like it's 2013. Missing Redis data types (Sets, Hashes, Sorted Sets, PubSub) means the Redis-compatibility story breaks down fast if your app uses anything beyond string commands. There's no auth, no TLS, no ACL system documented anywhere — fine for a trusted internal network, a problem everywhere else.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →