Redis 3.0.0 is here: Clustering!
In keeping with tradition, Salvatore Sanfilippo has made another release on April Fools – but there’s no joke here, with the announcement of Redis 3.0.0 coming and the introduction of native support for clustering.
The announcement of Redis 3.0.0 may not have been on everyone’s radar, thanks to the date that Redis main-man Salvatore Sanfilippo chose to launch the latest stable Redis release: April 1st, 2015.
To be fair, Sanfilippo is actually adhering to a tradition of releasing real stuff on the global Day of Deception – he set the precedent last year, with the announcement of HyperLogLog, which was also seen as a prank until, you know, it wasn’t.
The availability of Redis 3.0.0 is no exception. The main talking point of the drop is Redis Cluster: a distributed implementation of a subset of Redis. This introduces native support for clustering, with the spec setting the following goals:
- High performance and linear scalability of up to 1000 nodes, with no proxies. Asynchronous replication is used, and no merge operations are performed on values
- Acceptable degree of write safety: the system will try to retain all the writes originating from clients connected with the majority of the master nodes
- Ability to survive to partitions where the majority of the master nodes are reachable and there is at least a reachable slave for every master node that is no longer reachable
Sanfilippo goes on to say that using replicas migration, masters “no longer replicated by any slave will receive one from a master which is covered by multiple slaves”.
The clustering spec is listed as a work in progress, as it’s continuously synchronized with the implementation of Redis. In his release announcement, Sanfilippo gushed about Redis Cluster being a big deal in the scope of the Redis ecosystem and the evolution of the project as a whole:
Redis used to be this little cute instance you run to solve certain problems. Later we evolved it into something more, with Sentinel there is an HA story to tell, and it is possible to use Redis for more complex tasks. Now with Redis Cluster the attempt is to give users the step forward, a system that out of the box is capable of a certain degree of automatic scalability and fault tolerance, a degree that should be enough for many users to change their view of Redis as a tool, and as the possible applications it is suitable for.
Other than Redis Cluster, additional improvements include:
- A better and more precise LRU algorithm
- Faster performance under a high (pipelined) load
- AOF rewrite reworked in order to reduce latency spikes with slow disks, when the process undertakes the final “write” of the accumulated buffer
A full list of all Redis 3.0 changes and updates can be found in the changelog.