天天看點

redis 一二事 - 搭建叢集緩存伺服器

在如今并發的環境下,對大資料量的查詢采用緩存是最好不過的了,本文使用redis搭建叢集

(個人喜歡redis,對memcache不感冒)

redis是3.0後增加的叢集功能,非常強大

叢集中應該至少有三個節點,每個節點有一備份節點。這樣算下來至少需要6台伺服器

考慮到有些朋友的電腦組態不是很高,跑多個虛拟機就會卡,這邊放出僞分布式和分布式

(2年前的配置)

redis 一二事 - 搭建叢集緩存伺服器

前提先裝好一個單例情況下的redis(這裡就不多說了)

需要6個redis執行個體

redis 一二事 - 搭建叢集緩存伺服器

搭建叢集的步驟:

在/usr/local下 建立檔案夾

redis 一二事 - 搭建叢集緩存伺服器
這個我是把原來的單例redis改了個名字做的
redis 一二事 - 搭建叢集緩存伺服器
redis 一二事 - 搭建叢集緩存伺服器

進入redis01/bin

删除dump檔案

redis 一二事 - 搭建叢集緩存伺服器
redis 一二事 - 搭建叢集緩存伺服器
修改端口
redis 一二事 - 搭建叢集緩存伺服器
打開注釋
redis 一二事 - 搭建叢集緩存伺服器

複制多份

(真實環境下隻需要一個就行,然後其餘5台機子重複以上操作)

redis 一二事 - 搭建叢集緩存伺服器

指定端口從7001到7006

這是真實環境下的

redis 一二事 - 搭建叢集緩存伺服器
占用率
redis 一二事 - 搭建叢集緩存伺服器
在redis源碼檔案夾下的src目錄下。redis-trib.rb,這個ruby腳本
redis 一二事 - 搭建叢集緩存伺服器

第四步:把redis-trib.rb檔案複制到到redis-cluster目錄下。

(真實環境下,隻需要放在你某個節點機子上就行,他會自動周遊到其他的節點上的,我做的時候放在了01上)

redis 一二事 - 搭建叢集緩存伺服器

執行ruby腳本之前,需要安裝ruby環境,不然裝不了

yum install ruby

redis 一二事 - 搭建叢集緩存伺服器
redis 一二事 - 搭建叢集緩存伺服器
yum install rubygems
redis 一二事 - 搭建叢集緩存伺服器
redis 一二事 - 搭建叢集緩存伺服器

安裝redis-trib.rb運作依賴的ruby的包

這個gem可以網上下載下傳,很多

redis 一二事 - 搭建叢集緩存伺服器
(真實環境下隻需要在其中一台機子上運作就行了)
redis 一二事 - 搭建叢集緩存伺服器
redis 一二事 - 搭建叢集緩存伺服器
進入各自的redis檔案夾,分别啟動所有的redis執行個體
redis 一二事 - 搭建叢集緩存伺服器
啟動成功
redis 一二事 - 搭建叢集緩存伺服器

使用redis-trib.rb建立叢集

不管是不是僞分布式,這隻需要啟動一次

redis 一二事 - 搭建叢集緩存伺服器

成功~!

連結第一個節點

redis 一二事 - 搭建叢集緩存伺服器

下面示範使用jedis來讀寫緩存

當然加入spring中一定要使用單例

1 @Test
 2     public void testCluster() throws Exception {
 3         Set<HostAndPort> nodes = new HashSet<>();
 4         nodes.add(new HostAndPort("192.168.1.193", 7001));
 5         nodes.add(new HostAndPort("192.168.1.194", 7002));
 6         nodes.add(new HostAndPort("192.168.1.195", 7003));
 7         nodes.add(new HostAndPort("192.168.1.196", 7004));
 8         nodes.add(new HostAndPort("192.168.1.197", 7005));
 9         nodes.add(new HostAndPort("192.168.1.198", 7006));
10         JedisCluster jedisCluster = new JedisCluster(nodes);
11         jedisCluster.set("name", "lee");
12         jedisCluster.set("age", "18");
13         String name = jedisCluster.get("name");
14         String value = jedisCluster.get("age");
15         System.out.println(name);
16         System.out.println(value);
17         jedisCluster.close();
18     }      

運作結果:

redis 一二事 - 搭建叢集緩存伺服器

可以看到redis用戶端上取資料的時候IP是不一樣的

redis 一二事 - 搭建叢集緩存伺服器

官網itzixi.com

微信公衆号:BeJavaGod

新浪微網誌

知乎

簡書

cnblogs

今日頭條

豆瓣

--> 同步更新

redis 一二事 - 搭建叢集緩存伺服器
redis 一二事 - 搭建叢集緩存伺服器
redis 一二事 - 搭建叢集緩存伺服器