使用Jedis连接Redis3.x集群操作

一、实验环境:

1.服务器为centos6.4版本系统

2.redis安装版本为3.2.9

3.jedis版本为jedis-2.9.0

3.jedis依赖commons-pool包版本为commons-pool2-2.2.jar


二、Jedis操作集群java测试代码:

/**

        *@throwsException

        *redis3.x集群下的API存储

        */

       @Test

       publicvoidtest2()throwsException{

              //创建集群中相应的节点对象,参数对应节点中的ip和端口号

              HostAndPorth1  =newHostAndPort("192.168.8.150",7000);

              HostAndPorth2  =newHostAndPort("192.168.8.150",7001);

              HostAndPorth3  =newHostAndPort("192.168.8.150",7002);

              HostAndPorth4  =newHostAndPort("192.168.8.150",7003);

              HostAndPorth5  =newHostAndPort("192.168.8.150",7004);

              HostAndPorth6  =newHostAndPort("192.168.8.150",7005);


              Seths=newHashSet();

              //依次放入set集合中

              hs.add(h1);

              hs.add(h2);

              hs.add(h3);

              hs.add(h4);

              hs.add(h5);

              hs.add(h6);

              //将set集合创建集群对象

              JedisClusterjc=newJedisCluster(hs);

              //直接进行相应的操作,和jedis一致

              jc.set("hxhaaj","哈哈啊哈");

              jc.set("waj","哈哈啊哈");

              jc.set("wangajiao","哈哈啊哈");

              jc.set("ajiao","哈哈啊哈");

              jc.set("hxh","哈哈啊哈");

              jc.set("wang","哈哈啊哈");

              jc.close();

       }


三、常见错误:

1.服务器中的端口号应在防火墙的配置文件中开启,否则无法连接,会出现如下错误。

报错JedisConnectionException: no reachable node is cluster


解决方法:

1.1)vi编辑防火墙的配置文件,加入这几个端口号开放

命令:

# vi /etc/sysconfig/iptables

编辑后,在中间加入这几行,位置一定要在commit之前

-A INPUT -m state --state NEW -m tcp -p tcp --dport7000 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport7001 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport7002 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport7003 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport7004 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 7005 -j ACCEPT


使用Jedis连接Redis3.x集群操作_第1张图片
防火墙配置信息

1.2)保存后,重启防火墙服务。

命令:

# service iptables restart

执行效果:

[root@server src]# service iptables restart

iptables:清除防火墙规则:[确定]

iptables:将链设置为政策 ACCEPT:filter [确定]

iptables:正在卸载模块:[确定]

iptables:应用防火墙规则:[确定]

1.3)再执行测试代码,成功。


使用Jedis连接Redis3.x集群操作_第2张图片
初始时6个节点数据库数据

此时再查看数据库:发现有记录。


使用Jedis连接Redis3.x集群操作_第3张图片
成功存储后各节点数据

2.从节点只能进行读取操作,增删改无法进行


从节点无法进行增删改操作

错误信息:

192.168.8.150:7000> flushall

(error) READONLY You can't write against a read only slave.


执行查看节点信息发现:

# redis-cli -c -h 192.168.8.150 -p 7000 cluster nodes


各节点信息

根据查看节点信息发现7000节点为从节点,所有无法进行增删改操作

你可能感兴趣的:(使用Jedis连接Redis3.x集群操作)