santosh79/remixdb
{ "createdAt": "2016-05-31T04:45:41Z", "defaultBranch": "master", "description": "Key/Value Store focussed on Concurrency and Distribution Primitives", "fullName": "santosh79/remixdb", "homepage": "", "language": "Elixir", "name": "remixdb", "pushedAt": "2025-06-26T14:18:49Z", "stargazersCount": 50, "topics": [ "database", "erlang-vm", "redis" ], "updatedAt": "2025-06-26T14:18:52Z", "url": "https://github.com/santosh79/remixdb"}Remixdb
Section titled “Remixdb”A Redis Protocol Compliant NoSQL database targeting Concurrency
Section titled “A Redis Protocol Compliant NoSQL database targeting Concurrency”RemixDB is a distributed NoSQL database, that implements the Redis protocol, built on the legendary Erlang VM. It aims for matching all of the performance of Redis while leveraging all of the good Systems Tooling of the BEAM VM - High Availability and High Throughput.
How fast is this?
Section titled “How fast is this?”It’s Fast! Pretty close to matching redis in terms of performance.
Here are some results of running redis-benchmark on an early 2021 M1 Macbook Air:
redis-benchmark -t get -n 100000 -r 100000000====== GET ====== 100000 requests completed in 1.25 seconds 50 parallel clients 3 bytes payload keep alive: 1
96.57% <= 1 milliseconds99.29% <= 2 milliseconds99.68% <= 3 milliseconds99.81% <= 4 milliseconds99.91% <= 5 milliseconds99.93% <= 6 milliseconds99.96% <= 7 milliseconds99.97% <= 8 milliseconds99.98% <= 9 milliseconds99.98% <= 10 milliseconds99.98% <= 11 milliseconds99.99% <= 12 milliseconds99.99% <= 13 milliseconds100.00% <= 14 milliseconds100.00% <= 15 milliseconds100.00% <= 18 milliseconds80192.46 requests per secondHow do I play with this?
Section titled “How do I play with this?”Docker is the preferred way to run this:
docker container run -d --rm -p 6379:6379 --name remixdb santoshdocker2021/remixdb:latestNO docker, then:
git clone https://github.com/santosh79/remixdbmix release_build/dev/rel/remixdb/bin/remixdb startYou don’t need any drivers - this should work with your redis drivers.
Why do this?
Section titled “Why do this?”We need Databases that are fault-tolerant, highly available and that can scale and take FULL advantage of the latest in Hardware specs (more cores). The Erlang VM is uniquely positioned to do this and this Database is an effort to prove it! :)
Status
Section titled “Status”This library is still being worked on, so it does NOT support all of redis’ commands — that being said, the plan is to get it to full compliance with Redis’ single server commands, ASAP. Redis Cluster is something I do not believe in - since I do not understand the Availability Guarantees it provides.
Module Architecture
Section titled “Module Architecture” +-------------------+ | Client App | +---------+---------+ | | TCP/Redis Protocol v+----------------------------------------------------------------+| Remixdb Application || +-------------------+ +-------------------+ || | TCP Server |<---------->| Redis Parser | || +---------+---------+ +---------+---------+ || | | || | Parsed Commands | || v v || +-----------------------------------------------+ || | Command Router | || +----------------------+-----------------------+ || | | | | || v v v v || +-----------+ +-----------+ +-----------+ +-----------+ || | String | | Hash | | List | | Set | || | Module | | Module | | Module | | Module | || +-----+-----+ +-----+-----+ +-----+-----+ +-----+-----+ || | | | | || | | | | || v v v v || +-----------------------------------------------+ || | Data Storage Layer | || | (GenServer state and/or ETS tables) | || +-----------------------------------------------+ |+----------------------------------------------------------------+ ^ | Supervised by v+---------------------------------------------------------------+| Supervision Tree || || +------------------------+ || | Remixdb Supervisor | || +-----------+------------+ || | || +------+-----+ || | | || v v || +----------+ +---------------------------+ || | TcpServer| | Datastructures Supervisor | || | | +-----------+---------------+ || +----------+ | || +--------+--------+ || | | | || v v v || +--------+ +--------+ +----------+ || | String | | Hash | | List/Set | || +--------+ +--------+ +----------+ |+---------------------------------------------------------------+ | | Uses v+---------------------------------------------------------------+| Utility Modules || +----------+ +----------+ +---------------------+ || | Renamer | | Counter | | Other Utilities | || +----------+ +----------+ +---------------------+ |+---------------------------------------------------------------+
+---------------------------------------------------------------+| Benchmark Suite || (Independent tools for measuring performance) |+---------------------------------------------------------------+Clustering and Master Read Replica setup with Automatic Failover
Section titled “Clustering and Master Read Replica setup with Automatic Failover”This will happen, soon!
Missing commands
Section titled “Missing commands”- RENAMENX
- Expiry and TTL commands
- Sorted sets
- Bitmaps & HyperLogLogs
- Blocking commands
- Pub Sub commands
- LUA scripting
Author
Section titled “Author”Santosh Kumar :: santosh79@gmail.com :: @santosh79