Redis Clusters

使用redis处理大量数据,一定会用到集群,一般有三种实现方式:

  1. 官方clusters:无中心化设计,不好升级,缺乏最佳实践。
  2. proxy分片:Codis是代表,通过Proxy节点对redis的访问进行路由。扩容容易,性能有开销。
  3. 客户端分片:实现简单,没有额外开销,扩容和缩容需要手动调整分片规则,运维复杂。比如:Redis-rb 和 Predis。

谈谈codis的实现。
怎样分片?
Pre-Sharding,hash算法是crc32(key)%1024。为每个redis-group提供slots和redis的映射关系,这些信息保存在zk中(Proxy没有状态)。这样hash路由只和slots有关,这样扩容无需rehash,只需部分slots迁移,然后更新slots 和redis-group的映射关系。


slots迁移

Codis支持的MGET/MSET无法保证原本单点时的原子语义的原因?


image.png

感谢:
Proxy-Style Redis集群设计
Codis作者黄东旭:细说分布式Redis架构设计和那些踩过的坑
Redis技巧:分片技术和Hash Tag

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容