概述
redis集群的搭建至少需要六個redis實例,為了更接近實際的生產(chǎn)環(huán)境,準備了三臺虛擬機,ip分別為192.168.1.12 ,192.168.1.15 , 192.168.1.18,redis的默認端口為6379,在這不使用默認端口,使用7000和7001端口。
集群介紹
redis集群是一個提供在多個Redis間共享數(shù)據(jù)的程序集,但不支持多個keys命令的處理。 在集群中每個節(jié)點都是平等的關(guān)系,都是對等的。每個節(jié)點都保存了各自的數(shù)據(jù)和整個集群的狀態(tài),每個節(jié)點都和其他所有節(jié)點連接,而且這些鏈接保持活躍,這樣就保證了鏈接集群中的任意一個節(jié)點,就可以獲取其他節(jié)點的數(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
- 進入解壓目錄: make
安裝過程中可能會有一些錯誤,可以參考這篇文章 : http://www.lxweimin.com/p/cc403be7f80d
創(chuàng)建Redis節(jié)點
在1.12主機上 /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 主機的ip地址 //默認為127.0.0.1 ,修改該主機的實際地址
daemonize yes //默認為no ,改為yes, 以守護進程模式運行,即為后臺運行,不顯示界面
pidfile /var/run/redis_7000.pid //pid文件對應(yīng)的端口號 7000 7001
cluster-enabled yes //開啟集群,把#去掉,默認不開啟集群模式
cluster-config-file nodes_7000.conf //集群的配置文件,由redis自己來維護
cluster-node-timeout 15000 //請求超時,默認15秒
appendonly yes //aof日志,開啟后每次寫操作都會記錄一條命令,可自行決定是否開啟
完成上面的步驟,一臺主機上的兩個節(jié)點就配置完了,在另外兩臺主機上也執(zhí)行同樣的操作。
啟動各節(jié)點實例
/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é)點的啟動情況,確保各個節(jié)點都能正常的運行。之后關(guā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 可連接到集群,因為 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 );
}
}
少年聽雨歌樓上,紅燭昏羅帳。
壯年聽雨客舟中,江闊云低,斷雁叫西風。
感謝支持!
---起個名忒難