Redis集群搭建

概述

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
創(chuàng)建集群.png

輸入yes


完成創(chuàng)建.png

加參數(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 );
    }
}


少年聽雨歌樓上,紅燭昏羅帳。  
壯年聽雨客舟中,江闊云低,斷雁叫西風。
感謝支持!
                                        ---起個名忒難

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容