概述
redis集群的搭建至少需要六個redis實(shí)例,為了更接近實(shí)際的生產(chǎn)環(huán)境偷溺,準(zhǔn)備了三臺虛擬機(jī)蹋辅,ip分別為192.168.1.12 ,192.168.1.15 挫掏, 192.168.1.18侦另,redis的默認(rèn)端口為6379,在這不使用默認(rèn)端口尉共,使用7000和7001端口褒傅。
集群介紹
redis集群是一個提供在多個Redis間共享數(shù)據(jù)的程序集,但不支持多個keys命令的處理袄友。 在集群中每個節(jié)點(diǎn)都是平等的關(guān)系殿托,都是對等的。每個節(jié)點(diǎn)都保存了各自的數(shù)據(jù)和整個集群的狀態(tài)剧蚣,每個節(jié)點(diǎn)都和其他所有節(jié)點(diǎn)連接支竹,而且這些鏈接保持活躍旋廷,這樣就保證了鏈接集群中的任意一個節(jié)點(diǎn),就可以獲取其他節(jié)點(diǎn)的數(shù)據(jù)唾戚。
環(huán)境:
- vitrualbox
- centos 7
- redis 3.2.8
安裝redis
- 上傳: redis 3.2.8 源碼包 到 /opt下
- 使用: tar -zxvf redis 3.2.8.tar.gz
- 進(jìn)入解壓目錄: make
安裝過程中可能會有一些錯誤柳洋,可以參考這篇文章 : http://www.reibang.com/p/cc403be7f80d
創(chuàng)建Redis節(jié)點(diǎn)
在1.12主機(jī)上 /usr/local 文件夾下創(chuàng)建 redis_cluster 目錄:
mkdir /usr/local/redis_cluster 目錄
在redis_cluster目錄下創(chuàng)建 名為 7000 7001 的兩個文件夾 待诅,并將/opt/redis-3.2.8目錄下的redis.conf 文家拷貝到文件夾下:
mkdir 7000 7001
cp /opt/redis-3.2.8/redis.conf /usr/local/redis_cluster/7000/
cp /opt/redis-3.2.8/redis.conf /usr/local/redis_cluster/7001/
修改redis.conf配置文件的內(nèi)容叹坦,如下:
port 7000 //redis啟動端口號 , 7001文件夾的配置文件端口號修改為7001
bind 主機(jī)的ip地址 //默認(rèn)為127.0.0.1 卑雁,修改該主機(jī)的實(shí)際地址
daemonize yes //默認(rèn)為no ,改為yes, 以守護(hù)進(jìn)程模式運(yùn)行募书,即為后臺運(yùn)行,不顯示界面
pidfile /var/run/redis_7000.pid //pid文件對應(yīng)的端口號 7000 7001
cluster-enabled yes //開啟集群测蹲,把#去掉莹捡,默認(rèn)不開啟集群模式
cluster-config-file nodes_7000.conf //集群的配置文件,由redis自己來維護(hù)
cluster-node-timeout 15000 //請求超時扣甲,默認(rèn)15秒
appendonly yes //aof日志篮赢,開啟后每次寫操作都會記錄一條命令,可自行決定是否開啟
完成上面的步驟琉挖,一臺主機(jī)上的兩個節(jié)點(diǎn)就配置完了启泣,在另外兩臺主機(jī)上也執(zhí)行同樣的操作。
啟動各節(jié)點(diǎn)實(shí)例
/opt/redis-3.2.8/src/redis-server /usr/local/redis_cluster/7000/redis.conf
/opt/redis-3.2.8/src/redis-server /usr/local/redis_cluster/7001/redis.conf
自行查看各個節(jié)點(diǎn)的啟動情況示辈,確保各個節(jié)點(diǎn)都能正常的運(yùn)行寥茫。之后關(guān)閉防火墻
配置集群的運(yùn)行環(huán)境
yum install -y ruby ruby-devel rubygems rpm-bulid
gem install redis
創(chuàng)建集群
/opt/redis-3.2.8/src/redis-trib.rb create --replicas 1 192.168.1.12:7000 192.168.1.12:7001 192.168.1.15:7000 192.168.1.15:7001 192.168.1.18:7000 192.168.1.18:7001
輸入yes
加參數(shù) -C 可連接到集群,因?yàn)?redis.conf 將 bind 改為了ip地址矾麻,所以 -h 參數(shù)不可以省略纱耻,-p 參數(shù)為端口號
$ /usr/local/redis-3.2.6/src/redis-cli -h 192.168.1.18 -c -p 7000
192.168.1.12:7000> set key zhagnsn
-> Redirected to slot [12539] located at 192.168.1.18:7000
OK
JAVA 操作redis集群
public class JedisClusterTest {
public static void main(String[] args) {
Set<HostAndPort> jedisClusterNodes = new HashSet<HostAndPort>() ;
jedisClusterNodes.add(new HostAndPort("192.168.1.12" , 7000));
jedisClusterNodes.add(new HostAndPort("192.168.1.12" , 7001));
jedisClusterNodes.add(new HostAndPort("192.168.1.15" , 7000));
jedisClusterNodes.add(new HostAndPort("192.168.1.15" , 7001));
jedisClusterNodes.add(new HostAndPort("192.168.1.18" , 7000));
jedisClusterNodes.add(new HostAndPort("192.168.1.18" , 7001));
JedisCluster cluster = new JedisCluster(jedisClusterNodes) ;
String name = cluster.get("key");
System.out.println(name );
}
}
少年聽雨歌樓上,紅燭昏羅帳险耀。
壯年聽雨客舟中弄喘,江闊云低,斷雁叫西風(fēng)甩牺。
感謝支持蘑志!
---起個名忒難