Redis Labs has announced RedisRaft, a new strong-consistency deployment option. The RedisRaft module makes it possible to use Redis and its existing clients, libraries, and data types in beyond-cache scenarios requiring a high level of reliability and consistency.
According to Yossi Gottlieb, chief architect, Redis Labs, the new option makes it possible to operate a number of Redis servers as a single fault-tolerant, strongly consistent cluster, and is based on the Raft consensus algorithm and an open-source C library that implements it.
RedisRaft brings a new strong consistency deployment option to Redis and the Redis ecosystem. The new module makes it possible to use Redis along with Redis’ existing clients, libraries, and data types in beyond-cache scenarios requiring a high level of reliability and consistency.
A RedisRaft cluster offers the same level of consistency and reliability expected from reliable, well-known data stores such as ZooKeeper or Etcd. In RedisRaft acknowledged writes are guaranteed to be committed and never lost, and reads will always return the most up-to-date committed write.
Naturally, such guarantees bring trade-offs in performance and availability, said Gottlieb, noting that in RedisRaft:
- Client operations depend on cluster nodes exchanging messages, so they become bound to network latency.
- Writes must be flushed to disk before completing, so they become bound to disk I/O latency.
- The cluster is available only as long as a majority of the nodes are up, healthy, and able to communicate with each other.
Once a RedisRaft module is loaded into Redis, it takes over communication between cluster nodes, replication of the Raft log or snapshots, persistence, and other processes. The Redis core remains unaware of this and as far as it is concerned, it is operating as a standalone server with no clustering, persistence, or replication, said Gottlieb.
RedisRaft is still under development and not yet generally available (GA). However, most basic functions are usable. As part of this work, Redis has been collaborating with Kyle Kingsbury (a.k.a Aphyr) to analyze and test RedisRaft using Jepsen, a well-known framework for testing the safety and correctness of distributed systems.
RedisRaft will be released under a dual license, either GNU AGPLv3 or Redis Source Available License (RSAL). Redis is currently working toward a first preview version which will be available in a couple of months.