Skip to content
目录概览

Redis 集群方案应该怎么做?都有哪些方案?

  1. twemproxy 大概概念是,它类似于一个代理方式,使用方法和普通 Redis 无任何区别, 设置好它下属的多个 Redis 实例后, 使用时在本需要连接 Redis 的地方改为连接twemproxy,它会以一个代理的身份接收请求并使用一致性 hash 算法,将请求转接到具体 Redis,将结果再返回 twemproxy。使用方式简便(相对 Redis 只需修改连接端口),对旧项目扩展的首选。 问题:twemproxy 自身单端口实例的压力,使用一致性 hash 后,对Redis 节点数量改变时候的计算值的改变,数据无法自动移动到新的节点。

  2. codis 目前用的最多的集群方案,基本和 twemproxy 一致的效果,但它支持在 节点数量改变情况下,旧节点数据可恢复到新 hash 节点。

  3. Redis cluster 3.0 自带的集群,特点在于他的分布式算法不是一致性 hash,而是 hash 槽的概念,以及自身支持节点设置从节点。具体看官方文档介绍。

  4. 在业务代码层实现 起几个毫无关联的 Redis 实例,在代码层,对 key 进行 hash 计算, 然后去对应的 Redis 实例操作数据。 这种方式对 hash 层代码要求比较高,考虑部分包括, 节点失效后的替代算法方案,数据震荡后的自动脚本恢复,实例的监控,等等