Most redis client implementations don't support redis cluster. Elem has a lot of services relying on redis, which are written in Python, Java, Go, Nodejs etc. It's hard to provide redis client libraries for multiple languages without breaking compatibilities. Elem used twemproxy before, but it relies on sentinel for high availabity, it also requires restarting to add or remove backend redis instances, which causes service interruption. And twemproxy is single threaded, Elem had to deploy multiple twemproxy instances for large number of clients, which causes the sysadmin headaches. Therefore, they made corvus.