redis集群搭建
1.daemonize yes
2.port 700* (分别对每个机器端口号进行设置)
3.bind xxx.xxx.xxx.xxx(必须要绑定当前机器的ip)
4.dir /usr/local/redis-cluster/700*/ (指定数据文件存放的位置,必须要指定不同的目录位置,不然会丢失数据)
5.cluster-enabled yes(启动集群模式,开始玩耍)
6.cluster-config-file nodes-700*.conf(这里700x最好和port对应上)
7.cluster-node-timeout 5000
8.appendonly yes




由于redis集群需要使用ruby命令,所以我们需要安装ruby
1.yum install ruby
2.yum install rubygems
3.gem install redis(安装redis和ruby的接口)


分别启动6个redis实例 然后检查是否启动成功


首先到redis安装目录下执行redis-trib.rb命令

./redis-trib.rb create --replicas 1 192.168.1.109:7001 192.168.1.109:7002 192.168.1.109:7003 192.168.1.109:7004 192.168.1.109:7005 192.168.1.109:7006




集群搭建成功后进行验证
1.连接任意客户端即可 ./redis-cli -c  -h 192.168.1.109 -p 7001
2.进行验证: cluster nodes 查看集群节点 cluster info
3.进行数据操作验证
4.关闭集群则需要逐个关闭


验证测试

192.168.1.109:7001> cluster nodes 

 428cc940d9a8054f9aabfe9c588670928356ce4e 192.168.1.109:7005@17005 slave a032663160a843950e504201bf97a0ada5868f15 0 1503757415000 5 connected 

 8e295f495ba5a060bf0a8ec9665e35896dc63cff 192.168.1.109:7004@17004 slave 63be2af135eb740f36f7a2f796e782163691bdee 0 1503757416184 4 connected 

 4219f5e98511e2a282ac91d9f05bf5efe3accf3c 192.168.1.109:7003@17003 master - 0 1503757418579 3 connected 10923-16383 

 a032663160a843950e504201bf97a0ada5868f15 192.168.1.109:7002@17002 master - 0 1503757417585 2 connected 5461-10922 

 e477088b9807a962a50c6e3881027d96bf9a1a79 192.168.1.109:7006@17006 slave 4219f5e98511e2a282ac91d9f05bf5efe3accf3c 0 1503757416000 6 connected 

 63be2af135eb740f36f7a2f796e782163691bdee 192.168.1.109:7001@17001 myself,master - 0 1503757415000 1 connected 0-5460




安照数据分槽 下面的例子虽然登录7001客户端存数据 但是结果存的槽正好在7002下面

192.168.1.109:7001> set name shuist 

 -> Redirected to slot [5798] located at 192.168.1.109:7002 

 OK 

 192.168.1.109:7002>




但是仍然可以获取数据

192.168.1.109:7001> keys * 

 (empty list or set) 

 192.168.1.109:7001> get name 

 -> Redirected to slot [5798] located at 192.168.1.109:7002 

 "shuist" 



 192.168.1.109:7002> set age 29 

 -> Redirected to slot [741] located at 192.168.1.109:7001 

 OK 

 192.168.1.109:7001> set sex man 

 OK 

 192.168.1.109:7001> set address beijing 

 OK 

 192.168.1.109:7001> set a 1 

 -> Redirected to slot [15495] located at 192.168.1.109:7003 

 OK 

 192.168.1.109:7003> set b 2 

 -> Redirected to slot [3300] located at 192.168.1.109:7001 

 OK








当出现集群无法启动时 删除临时数据文件 再次启动每一个redis服务 然后重新构造集群环境






















Java操作集群

public class TestClusterRedis { 



     public static void main(String[] args) { 

         Set<HostAndPort> jedisClusterNode = new HashSet<HostAndPort>(); 

         jedisClusterNode.add(new HostAndPort("192.168.1.109",7001)); 

         jedisClusterNode.add(new HostAndPort("192.168.1.109",7002)); 

         jedisClusterNode.add(new HostAndPort("192.168.1.109",7003)); 

         jedisClusterNode.add(new HostAndPort("192.168.1.109",7004)); 

         jedisClusterNode.add(new HostAndPort("192.168.1.109",7005)); 

         jedisClusterNode.add(new HostAndPort("192.168.1.109",7006)); 



         JedisPoolConfig cfg = new JedisPoolConfig(); 

         cfg.setMaxTotal(100); 

         cfg.setMaxIdle(20); 

         cfg.setMaxWaitMillis(-1); 

         cfg.setTestOnBorrow(true); 

         JedisCluster jc = new JedisCluster(jedisClusterNode,6000,100,cfg); 



         System.out.println(jc.set("age","20")); 

         System.out.println(jc.set("sex","nv")); 

         System.out.println(jc.get("name")); 

         System.out.println(jc.get("name")); 

         System.out.println(jc.get("name")); 

         System.out.println(jc.get("name")); 

         System.out.println(jc.get("name")); 

         System.out.println(jc.get("name")); 

         System.out.println(jc.get("name")); 

         try { 

             jc.close(); 

         } catch (IOException e) { 

             e.printStackTrace(); 

         } 



     } 

 }