实现基础都是通过哈希函数将健名转化为一个数字,然后取mod运算,转化成一个比如0-4的数字,映射到第几台redis服务器。

  • 客户端实现数据分片,多数redis客户端都有这个功能,缺点是客户端需要实时知道集群节点的信息。如果增加新节点,客户端也要调整。
  • 服务端实现,对业务透明。使用redis-cluster 自动分片。集群内部将所有key映射到 16384 个Slot中,一个key属于哪个槽(Slot)由CRC16 MOD 16384 计算。
  • 通过引入中间件实现,twitter开源的Twemproxy可以实现,对业务透明。