日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

Windows下Redis集群搭建

發布時間:2024/5/15 windows 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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

????

???? 7000文件夾下的redis.conf修改完成之后,把其下文件分別復制到7001~7005文件夾中, 并修改redis.conf中對應端口號。依次以后臺方式啟動7000-7005中的緩存實例, 命令:./7000/redis-server ./7000/redis.conf &

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


3. jedis訪問redis集群

新建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集群搭建的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。