All Projects → santosh79 → remixdb

santosh79 / remixdb

Licence: MIT license
Key/Value Store focussed on Concurrency and Distribution Primitives

Programming Languages

elixir
2628 projects
Makefile
30231 projects

Projects that are alternatives of or similar to remixdb

Lumen
An alternative BEAM implementation, designed for WebAssembly
Stars: ✭ 2,742 (+5993.33%)
Mutual labels:  erlang-vm
Erlang-BEAM-Links
Erlang VM internals
Stars: ✭ 53 (+17.78%)
Mutual labels:  erlang-vm
try clojerl
Online Clojerl REPL
Stars: ✭ 26 (-42.22%)
Mutual labels:  erlang-vm

Remixdb

Build Status

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?

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 milliseconds
99.29% <= 2 milliseconds
99.68% <= 3 milliseconds
99.81% <= 4 milliseconds
99.91% <= 5 milliseconds
99.93% <= 6 milliseconds
99.96% <= 7 milliseconds
99.97% <= 8 milliseconds
99.98% <= 9 milliseconds
99.98% <= 10 milliseconds
99.98% <= 11 milliseconds
99.99% <= 12 milliseconds
99.99% <= 13 milliseconds
100.00% <= 14 milliseconds
100.00% <= 15 milliseconds
100.00% <= 18 milliseconds
80192.46 requests per second

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:latest

NO docker, then:

git clone https://github.com/santosh79/remixdb
mix release
_build/dev/rel/remixdb/bin/remixdb start

You don't need any drivers - this should work with your redis drivers.

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

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.

Clustering and Master Read Replica setup with Automatic Failover

This will happen, soon!

Missing commands

  • RENAMENX
  • Expiry and TTL commands
  • Sorted sets
  • Bitmaps & HyperLogLogs
  • Blocking commands
  • Pub Sub commands
  • LUA scripting

Author

Santosh Kumar :: [email protected] :: @santosh79

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].