Windows下搭建RedisCluster集羣

一.準備工做

1.Redishtml

Redis官方只有Linux版本,並不支持Windows版本。但微軟的開源項目組維護了Windows64位的版本。 詳見地址: https://github.com/MicrosoftArchive/redis.這次下載的版本爲Redis-x64-3.2.100.zip,也msi版本安裝,推薦使用zip壓縮包的方式。解壓以下圖所示: 輸入圖片說明前端

其中redis-server.exe爲redis啓動程序,redis.windows.conf是redis的配置文件,redis-cli.exe是redis的鏈接客戶端,也可以使用圖形化客戶端工具Redis Desktop Manager.node

2.Ruby運行環境webpack

Redis集羣使用Ruby語言編寫的,所以須要Ruby語言環境的支持。下載地址: https://rubyinstaller.org/downloadsgit

輸入圖片說明

安裝時以上選項所有勾選!github

3.RubyGemsweb

RubyGems是Ruby的打包的管理框架,有點相似前端的webpack。下載地址: https://rubygems.org/pages/download. Windows下載zip壓縮包,解壓,運行文件夾裏setup.rb安裝RubyGems。 安裝完成後,在命令行工具裏就可查看到安裝的ruby,gems版本。輸入圖片說明redis

因爲牆的緣由,gems自帶的源訪問速度很慢,這裏添加國內的鏡像,Ruby China (淘寶的鏡像的管理工做將交由Ruby China負責)。windows

在Cmd下運行:ruby

1.  gem source -l          查看當前全部的源
2.  gem source -a xxx     添加源    
3.  gem source -r xxx     刪除源
4.  gem install redis     安裝Redis依賴

輸入圖片說明

二.搭建Redis Cluster

1.建立節點文件

要讓集羣正常運做至少須要三個主節點, 不過在剛開始試用集羣功能時, 強烈建議使用六個節點: 其中三個爲主節點, 而其他三個則是各個主節點的從節點。詳見官方命令教程:http://doc.redisfans.com/topic/cluster-tutorial.html#id5.

將準備工做中下載的Redis-x64-3.2.100.zip解壓後的文件,放入指定目錄,並複製成6份相同的文件夾,以節點端口號命名爲6380-6385。輸入圖片說明

2.修改節點配置文件

修改每一個文件夾下的配置文件redis.windows.conf,這裏以6380爲例,設置一下幾個屬性, 注意將前面的註釋符號#去掉

port 6380
    cluster-enabled yes
    cluster-config-file nodes-6380.conf
    cluster-node-timeout 15000
    appendonly yes

文件中的 cluster-enabled 選項用於開實例的集羣模式, 而 cluster-conf-file 選項則設定了保存節點配置文件的路徑, 默認值爲 nodes.conf 。

節點配置文件無須人爲修改, 它由 Redis 集羣在啓動時建立, 並在有須要時自動進行更新。

3.建立啓動腳本文件 在每一個文件夾下建立腳本start.bat,建立腳本目的只是不須要重複敲命令, 文件內容以下:

redis-server.exe redis.windows.conf

4.建立集羣

  1. 分別運行6個文件夾裏的start.bat,來啓動6個Redis實例。

  2. 在外層文件夾下,建立一個ruby文件,redis-trib.rb. 內容能夠從源碼獲取: https://github.com/MicrosoftArchive/redis/releases,

  3. cmd下執行命令

    redis-trib.rb create --replicas 1 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383
     127.0.0.1:6384 127.0.0.1:6385

命令的意義以下:給定 redis-trib.rb 程序的命令是 create , 這表示咱們但願建立一個新的集羣。 選項 --replicas 1 表示咱們但願爲集羣中的每一個主節點建立一個從節點。 以後跟着的其餘參數則是實例的地址列表, 咱們但願程序使用這些地址所指示的實例來建立新集羣。 簡單來講, 以上命令的意思就是讓 redis-trib 程序建立一個包含三個主節點和三個從節點的集羣。

若是出現下面的狀況,說明以前已經創建了集羣了,下圖意思代表6380節點已經與其餘節點創建聯繫或者包含了數據。Redis集羣只需創建一次便可,若是有節點掛掉,只需從新啓動該節點,集羣就會正常工做。

輸入圖片說明

接着, redis-trib 會打印出一份預想中的配置給你看, 若是你以爲沒問題的話, 就能夠輸入 yes , redis-trib 就會將這份配置應用到集羣當中: 輸入圖片說明

輸入 yes 並按下回車確認以後, 集羣就會將配置應用到各個節點, 並鏈接起(join)各個節點 —— 也便是, 讓各個節點開始互相通信。若是一切正常的話, redis-trib 將輸出如下信息: 輸入圖片說明

這表示集羣中的 16384 個哈希槽都有至少一個主節點在處理, 集羣運做正常。

下面看看節點的配置文件裏有什麼內容: 輸入圖片說明

文件中清楚的說明了6380/6381/6382是主節點,6383/6384/6385是從節點,而且一 一對應。

三.客戶端測試

本例使用Spring Boot集成Redisson,進行測試,Spring Boot版本爲1.5.2.RELEASE 。

  1. 添加Maven依賴
<dependency>
    <groupId>org.redisson</groupId>
     <artifactId>redisson</artifactId>
     <version>3.3.2</version>
</dependency>
  1. 配置RedissonClient

address變量值能夠配置在application.properties屬性文件裏,這裏不在演示。 注意此處的Config 使用集羣配置

@SpringBootConfiguration
public class RedisLoader {

    @Bean(name = "clusterRedissonClient")
    public RedissonClient clusterServerConfig(){
        Config config = new Config();
        config.useClusterServers()
                .addNodeAddress("127.0.0.1:6380")
                .addNodeAddress("127.0.0.1:6381")
                .addNodeAddress("127.0.0.1:6382")
                .addNodeAddress("127.0.0.1:6383")
                .addNodeAddress("127.0.0.1:6384")
                .addNodeAddress("127.0.0.1:6385");
        return Redisson.create(config);
    }
}

3.測試代碼

@SpringBootTest
@RunWith(SpringJUnit4ClassRunner.class)
public class RedisTest {

    @Resource(name = "clusterRedissonClient")
    private RedissonClient redissonClient;


    @Test
    public void t(){
        RBucket<String> name = redissonClient.getBucket("name");
        name.set("張三");
    }

    @Test
    public void t1(){
        RBucket<String> name = redissonClient.getBucket("name");
        String s = name.get();
        System.out.println(s);
    }
}

4.設置測試運行結果: 輸入圖片說明 日誌中的: master: redis://127.0.0.1:6381 added for slot ranges: [[10923-16383]],意思是6381機器對應卡槽範圍是10923-16383。對key 作 CRC16校驗後,值在 10923-16383範圍內都會存到這個端口裏。

咱們如今看看,保存在哪一個端口上了: 輸入圖片說明

能夠清晰的看出被保存在6381端口上了,而6384是6381的從節點,所以也有該數據。

5.獲取測試運行結果

輸入圖片說明

咱們看到已經從集羣中獲取到剛纔設置的值。

相關文章
相關標籤/搜索