By Anders Persson, Bisheng Huang
At Uber, we use Redis with Twemproxy to provide an internal Cache-as-a-Service solution, but new use cases requiring an in-memory key-value store solution with higher data availability started to emerge. As such, we decided to look into productizing Redis Cluster.
In this talk, we describe the new use cases and our journey in taking Redis Cluster from initial evaluation to production launch, and the lessons we learned along the way. Specifically, we discuss performance evaluations (benchmarking different Java and Go clients), how we did the functional testing, and the framework that was built to automate cluster management.
One of the early decisions the team made was to build a cluster management library (in Go) which is leveraged by multiple CLI tools and the automation/management framework. We discuss the motivation behind this library and its features, including creating cluster topologies that are resilient to availability zone failures and how it deals with failure recovery.