一氢哮、實(shí)驗(yàn)環(huán)境:
1.服務(wù)器為centos6.4版本系統(tǒng)
2.redis安裝版本為3.2.9
3.jedis版本為jedis-2.9.0
3.jedis依賴commons-pool包版本為commons-pool2-2.2.jar
二、Jedis操作集群java測(cè)試代碼:
/**
?????? ?*@throwsException
?????? ?*redis3.x集群下的API存儲(chǔ)
?????? ?*/
?????? @Test
?????? publicvoidtest2()throwsException{
????????????? //創(chuàng)建集群中相應(yīng)的節(jié)點(diǎn)對(duì)象,參數(shù)對(duì)應(yīng)節(jié)點(diǎn)中的ip和端口號(hào)
????????????? 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集合創(chuàng)建集群對(duì)象
????????????? JedisClusterjc=newJedisCluster(hs);
????????????? //直接進(jìn)行相應(yīng)的操作,和jedis一致
????????????? jc.set("hxhaaj","哈哈啊哈");
????????????? jc.set("waj","哈哈啊哈");
????????????? jc.set("wangajiao","哈哈啊哈");
????????????? jc.set("ajiao","哈哈啊哈");
????????????? jc.set("hxh","哈哈啊哈");
????????????? jc.set("wang","哈哈啊哈");
????????????? jc.close();
?????? }
三、常見錯(cuò)誤:
1.服務(wù)器中的端口號(hào)應(yīng)在防火墻的配置文件中開啟忿偷,否則無法連接瓷耙,會(huì)出現(xiàn)如下錯(cuò)誤太伊。
報(bào)錯(cuò)JedisConnectionException:?no?reachable?node?is?cluster
解決方法:
1.1)vi編輯防火墻的配置文件,加入這幾個(gè)端口號(hào)開放
命令:
#?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
1.2)保存后麻汰,重啟防火墻服務(wù)速客。
命令:
#?service iptables restart
執(zhí)行效果:
[root@server src]# service iptables restart
iptables:清除防火墻規(guī)則:[確定]
iptables:將鏈設(shè)置為政策 ACCEPT:filter?[確定]
iptables:正在卸載模塊:[確定]
iptables:應(yīng)用防火墻規(guī)則:[確定]
1.3)再執(zhí)行測(cè)試代碼,成功五鲫。
此時(shí)再查看數(shù)據(jù)庫:發(fā)現(xiàn)有記錄溺职。
2.從節(jié)點(diǎn)只能進(jìn)行讀取操作,增刪改無法進(jìn)行
錯(cuò)誤信息:
192.168.8.150:7000> flushall
(error) READONLY You can't write against a read?only slave.
執(zhí)行查看節(jié)點(diǎn)信息發(fā)現(xiàn):
# redis-cli -c -h 192.168.8.150 -p 7000 cluster?nodes
根據(jù)查看節(jié)點(diǎn)信息發(fā)現(xiàn)7000節(jié)點(diǎn)為從節(jié)點(diǎn)位喂,所有無法進(jìn)行增刪改操作浪耘。