Windows下Redis集群搭建
上一篇文章中介紹了Windows下使用cygwin搭建redis單節點,這一篇文件將在上一篇文章的基礎上搭建redis集群。
1. 在安裝redis的目錄的同級目錄下新建6個文件夾,7000,70001,7002,7003,7004,7005
??????將./redis-stable/src/目錄下面redis-server redis.conf兩個文件復制到./7000/文件夾中,當前目錄下使用命令:cp ./redis-stable/src/redis-server ./redis-stable/redis.conf ./7000,然后,修改redis.conf文件中內容,將下列值改為如下:
???? port 7000?????????????????? #設置端口
???? cluster-enabled yes? #打開集群支持
???? cluster-config-file nodes.conf #節點配置文件名
???? cluster-node-timeout 5000 #節點超時時間
? ? ? appendonly yes ?????? #設置redis數據操作方式
????? daemonize yes??????? #設置redis默認以后臺程序方式運行
? ? ? 注意:由于文件行數較多,可以在命令模式下使用 /要搜索的內容 來找到指定行,再使用命令 “ : number” 來跳轉到指定行。如果要顯示行號,可以修改 /etc/vimrc文件,在最后添加一行 : set nu
????
2. 在redis的src目錄下執行創建集群命令創建集群
? ?./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
2.1執行上面的命令的時候會報錯,因為是執行的ruby的腳本,需要ruby的環境
??? 錯誤內容:/usr/bin/env:?ruby:?No?such?file?or?directory,
??? 需要安裝ruby的環境。這里雙擊cygwin.exe文件,安裝ruby。可以參考上一篇文章中cygwin中安裝gcc、make
2.2安裝完成ruby后,再執行第6步的創建集群命令,還會報錯,提示缺少rubygems組件。使用cygwin進行安裝。
2.3再次執行第6步的命令,還會報錯,提示不能加載redis,是因為缺少redis和ruby的接口,使用gem?安裝。在redis的src目錄下執行命令 gem?install?redis
???
2.4 再次執行集群創建命令
輸入yes,使用默認的設置
?redis集群到這里就搭建完成了。另開一個窗口,輸入 redis-cli -p 7000,然后輸入 cluster nodes,就可以看到集群的節點信息。這里可以看到, 端口為7001、7002、7003的是master,其它的是slave
新建maven項目,添加pom依賴
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.johnfnash.learn</groupId><artifactId>redis-cluster-first</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>redis-cluster-first</name><url>http://maven.apache.org</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId><version>2.4.2</version></dependency><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.7.3</version></dependency><!-- junit --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency></dependencies> </project>
編寫junit測試代碼
import java.util.HashSet; import java.util.Set;import org.junit.Test;import redis.clients.jedis.HostAndPort; import redis.clients.jedis.JedisCluster; import redis.clients.util.JedisClusterCRC16;public class RedisClusterTest {@Testpublic void test() {Set<HostAndPort> jedisClusterNodes = new HashSet<HostAndPort>();//只需要添加一個實例,jedis會自動發現集群中其它節點jedisClusterNodes.add(new HostAndPort("127.0.0.1", 7000));JedisCluster jc = new JedisCluster(jedisClusterNodes);String key = "1417";jc.setnx(key, "bar");String value = jc.get(key);System.out.println("key-" + key + " slot-" + JedisClusterCRC16.getSlot(key)+ " value-" + value);String key2 = "288";jc.setnx(key2, "bar2");String value2 = jc.get(key2);System.out.println("key-" + key2 + " slot-" + JedisClusterCRC16.getSlot(key2)+ " value-" + value2);try {Thread.sleep(2000);} catch (InterruptedException e) {e.printStackTrace();} finally {if(null != jc) {jc.close();}}}}運行junit測試用例,結果如下:
接下來用redis客戶端看看這兩個key=1417 、key=288的值存到哪個節點下
看回最初的配置
key=288算出來的 CRC16校驗和是 4258,根據配置 應該存在 7003這臺機上
key=1417 算出來的 CRC16校驗和是 13096,根據配置 應該存在 7002 這臺機上
用redis 客戶端查看數據存到哪臺機器上
從redis客戶端看到的結果與配置一致
總結
以上是生活随笔為你收集整理的Windows下Redis集群搭建的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [Linux] Linux文件系统
- 下一篇: android网页打印,安卓网页打印,h