Redis在windows下集羣搭建

原文地址:http://www.jianshu.com/p/22af55518f6d


一、開發環境

1、win7

2、redis 3.0 64位

3、ruby環境

二、相關安裝

1、redis安裝

參考:http://blog.csdn.net/littleskey/article/details/52241904

2、ruby環境準備

下載 64位的 RubyInstaller並安裝 地址http://rubyinstaller.org/downloads/勾選下面三個不用配置環境變量


3、RubyGems安裝

下載下來是一個壓縮包,解壓運行裏面的 setup.rb 安裝 rubyGems

(原文說ruby的源很慢,換成淘寶的源。本文實現時,淘寶的源已不可用,在此不更換源。如需更換,請查看原文)

4、下載redis-trib.rb

參照上文下載下來的redis包,沒有該文件。到https://github.com/antirez/redis/tree/unstable/src 目錄下下載。之前的ruby環境就是爲運行這個文件做準備的。

三、Redis相關配置

文檔說明:http://doc.redisfans.com/topic/cluster-tutorial.html#id5

要讓集羣正常運作至少需要三個主節點, 不過在剛開始試用集羣功能時, 強烈建議使用六個節點: 其中三個爲主節點, 而其餘三個則是各個主節點的從節點。

1、創建節點

創建六個文件夾,每個文件夾複製一份下載的Redis包。如:


2、修改redis.window.conf文件

(1)修改各個文件對應的端口號。如:

修改redis-lates1中redis.window.conf的port爲7000

修改redis-lates2中redis.window.conf的port爲7001

依次類推。

(2)公共部分

appendonly yes
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000

3、創建啓動腳本startRedis.bat

這樣不用總是敲命令,其他幾個文件夾同理


4、啓動集羣

(1)啓動上面所說各個redis實例

(2)到redis-trib.rb(沒有參考二 4、下載redis-trib.rb)所在目錄運行命令

redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005

redis-trib.rb
create, 這表示我們希望創建一個新的集羣。
選項 --replicas 1 表示我們希望爲集羣中的每個主節點創建一個從節點。
之後跟着的其他參數則是實例的地址列表, 我們希望程序使用這些地址所指示的實例來創建新集羣

(replicas 後爲1不爲小寫L)

 以上命令的意思就是讓 redis-trib 程序創建一個包含三個主節點和三個從節點的集羣。

(3)執行結果

打印出配置信息,現在的master是 7000 7001 7002這三臺機,redis會對key 做 CRC16 校驗和後分別存儲這三臺機上。沒問題就輸入 yes(上例未輸入yes,程序中止)

例如 7000 這臺機 slots:0-5460 的意思是:

對key 做 CRC16 校驗和後 值在 0-5460範圍內都會存到這臺機器裏。例如 key=288 對應的CRC16校驗和 爲 4258,應該存在7000這臺機裏

四、Jedis編程使用集羣

package com.learn.redis;

import java.util.HashSet;
import java.util.Set;

import org.junit.Before;
import org.junit.Test;

import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisCluster;

public class RedisClusterTest {
	private JedisCluster jc;
	
	@Before
	public void init()
	{
		Set<HostAndPort> nodes = new HashSet<>();
		//Jedis Cluster會自動發現集羣中的節點
		nodes.add(new HostAndPort("127.0.0.1", 7000));
		jc = new JedisCluster(nodes);
		
	}
	
	@Test
	public void test()
	{
		jc.set("foo","bar");
		System.out.println(jc.get("foo"));
	}
	
}


 

發佈了53 篇原創文章 · 獲贊 14 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章