⚠️ RedisRaft is still being developed and is not yet ready for any real production use. Please do not use it for any mission critical purpose at this time.
RedisRaft is a Redis module that implements the Raft Consensus Algorithm, making it possible to create strongly-consistent clusters of Redis servers.
The Raft algorithm is provided by a standalone Raft library by Willem-Hendrik Thiart.
- Strong consistency (in the language of CAP, this system prioritizes consistency and partition-tolerance).
- Support for most Redis data types and commands
- Dynamic cluster configuration (adding / removing nodes)
- Snapshots for log compaction
- Configurable quorum or fast reads
To compile the module, you will need:
- Build essentials (a compiler, GNU make, etc.)
- CMake
- GNU autotools (autoconf, automake, libtool).
To build:
git clone https://github.com/RedisLabs/redisraft.git
cd redisraft
mkdir build && cd build
cmake ..
make
redisraft.so
will be created under the project directory.
Note: RedisRaft requires Redis 7.0 or above.
To create a three-node cluster, start the first node:
redis-server \
--port 5001 --dbfilename raft1.rdb \
--loadmodule <path-to>/redisraft.so \
--raft.log-filename raftlog1.db \
--raft.addr localhost:5001
Then initialize the cluster:
redis-cli -p 5001 raft.cluster init
Now start the second node, and run the RAFT.CLUSTER JOIN
command to join it to the existing cluster:
redis-server \
--port 5002 --dbfilename raft2.rdb \
--loadmodule <path-to>/redisraft.so \
--raft.log-filename raftlog2.db \
--raft.addr localhost:5002
redis-cli -p 5002 RAFT.CLUSTER JOIN localhost:5001
Now add the third node in the same way:
redis-server \
--port 5003 --dbfilename raft3.rdb \
--loadmodule <path-to>/redisraft.so \
--raft.log-filename raftlog3.db
--raft.addr localhost:5003
redis-cli -p 5003 RAFT.CLUSTER JOIN localhost:5001
To query the cluster state, run the INFO raft
command:
redis-cli -p 5001 INFO raft
Now you can start using this RedisRaft cluster. All supported Redis commands will be executed in a strongly-consistent manner using the Raft protocol.
Please consult the documentation for more information.
RedisRaft is licensed under the Redis Source Available License (RSAL).