一 理解前提
分片是为了把鸡蛋放到几个篮子里,而Dynamo型的分片加复制备份可以再把数据复制几份,每一份copy放到不同的节点上。
Redis在数据容灾处理方面可以通过服务器端配置Master-Slave模式来实现,而在分布式集群方面目前只能通过客户端工具来实现一致性哈希分布存储,即key分片存储。Redis可能会在3.0版本支持服务器端的分布存储。Redis只能依靠各个Client做Sharding。可能会在Redis 3.0系列支持Server端Sharding。
Memcached是在Server端完成Sharding,Memcached完全基于分布式集群,而Redis是Master-Slave,如果想把Reids,做成集群模式,无外乎多做几套Master-Slave,每套Master-Slave完成各自的容灾处理,通过Client工具,完成一致性哈希。
二 jedis源码中ShardedJedis实现sharding
1、一个JedisShardInfo类,里面包含了jedis服务器的一些信息,比如
- private int timeout;
- private String host;
- private int port;
- private String password = null;
- private String name = null;
这个类还有一个继承自父类的方法createResource,用来生成该类对应的Jedis对象.
public