Ruby Video
Talks
Speakers
Events
Topics
Leaderboard
Sign in
Talks
Speakers
Events
Topics
Use
Analytics
Sign in
Suggest modification to this talk
Title
Description
When a single Redis instance is not enough, Redis offers a number of different options for scaling out to multiple nodes, with different tradeoffs for read/write throughput and availability. At Zendesk, we have migrated to Redis cluster mode for one of our write-heavy workloads. We found, however, that simply flipping the switch to turn on cluster mode did not quite work as we'd hoped! This talk will cover our journey of getting Redis Cluster to work properly with our Ruby monolith; in particular: * How Redis cluster mode works, and what it requires of language-specific client libraries, and * How we added support for missing features we needed into the redis-cluster-client gem Redis Cluster should now be a solid choice for your Ruby applications as well!
Date
Summarized using AI?
If this talk's summary was generated by AI, please check this box. A "Summarized using AI" badge will be displayed in the summary tab to indicate that the summary was generated using AI.
Show "Summarized using AI" badge on summary page
Summary
Markdown supported
In the talk titled 'Scaling Redis writes with cluster mode,' KJ Tsanaktsidis from Zendesk discusses the challenges and solutions encountered while migrating to Redis Cluster mode for their write-heavy workload. The presentation outlines the various methods of deploying Redis, from a single instance to Redis Sentinel and Redis Distributed, before arriving at Redis Cluster. Key points include: - **Understanding Redis Architecture**: KJ explains the simple deployment of a single Redis instance versus more complex architectures like Redis Sentinel for high availability, which doesn't work for write operations in a write-heavy context. - **Redis Distributed**: This method splits the keyspace across multiple Redis servers but can lead to high availability issues as losing a server means losing half the keys. - **Redis Cluster**: The talk highlights Redis Cluster’s capability to support horizontal scalability by dividing the keyspace into 16,000 slots and electing masters per slot. This allows for both read and write operations across multiple nodes, though it requires client library support for routing keys correctly. - **Challenges Faced**: KJ recounts the initial attempt to scale using Redis Cluster, which faced issues like 'cross-slot pipelining errors' due to improper configuration. The understanding of Redis operations and the architecture was essential to troubleshoot these errors. - **Contributions to Redis**: Zendesk engaged with the Redis open-source community to improve transaction support in the Redis gem, emphasizing the importance of collaboration and maintaining upstream dependencies. They aimed to refine their implementations rather than resorting to hacks. Concluding, KJ provides valuable lessons about utilizing Redis for write-heavy workloads and engaging with open-source libraries: - Use Redis Cluster for scaling writes and keep anecdotal historical data in mind. - Report issues and stay updated with gem versions to benefit from improvements. - Collaborate with upstream maintainers as everyone has something to offer to open-source initiatives.
Suggest modifications
Cancel