Hello Java我爱编程

windows下搭建redis集群

2017-12-06  本文已影响102人  Aldeo

1.下载安装redis

(1)Redis官方不支持Windows,但是Microsoft Open Tech group在 GitHub上开发了一个Win64的版本,下载地址为:

https://github.com/MSOpenTech/redis/releases

解压后拷贝到自己的目录下:

例如我的path:G:\Tool\redis-windows-master

此时打开cmd命令窗口,换到Redis目录下,执行

redis-server redis.windows.conf

这时候默认的打开的redis是6379端口

(2)窗口不要关闭,再重新打开一个cmd窗口,连接Redis执行

redis-cli.exe -h 127.0.0.1 -p 6379

可以操作redis

2. 安装Ruby并配置环境

(1)安装ruby的原因:

redis-cluster安装前需要安装ruby环境,搭建集群需要使用到官方提供的ruby脚本。

(2)安装Ruby,Windows可以安装RubyInstaller,下载地址:

http://railsinstaller.org/en

一直下一步安装完成会自动弹出一个cmd的黑色窗口,需要对Ruby进行配置。安装目录必须是英文的不能含有中文否则执行gem命令报错

(3)执行命令:

gem sources --remove https://rubygems.org/删掉原来的源

gem sources -a https://ruby.taobao.org添加淘宝源,注意为https,否则会找不到源

gem sources -l 查看现有的源

gem install redis  安装redis依赖

执行 gem install redis 出现 SSL Connect error时,是因为ruby 没有包含 SSL 证书,所以 https 的链接被服务器拒绝。

解决方法很简单,首先在这里下载证书http://curl.haxx.se/ca/cacert.pem, 然后再环境变量里设置 SSL_CERT_FILE 这个环境变量,并指向 cacert.pem 文件。

要让集群正常运作至少需要三个主节点,因此我们创建6个节点,三个主节点三个从节点,

参考:http://doc.redisfans.com/topic/cluster-tutorial.html#id5

将安装的redis文件夹中的redis.windows.conf以及redis-server,分别拷贝到新建的六个文件夹中

2). 更改配置

将六个文件夹下的redis.windows.conf文件中以下属性进行修改:

port 7001(对应文件夹的端口号)

cluster-enabled yes

cluster-config-file nodes.conf

cluster-node-timeout 5000

appendonly yes

3). 启动6个redis服务


其他几个启动方法如上图。

若嫌以后启动麻烦,可以自己编写一个启动redis集群的bat文件:

@echo off

start cmd /k "G:&&cd G:\Tool\redis-windows-master\7001&&redis-server.exe redis.windows.conf"

start cmd /k "G:&&cd G:\Tool\redis-windows-master\7002&&redis-server.exe redis.windows.conf"

start cmd /k "G:&&cd G:\Tool\redis-windows-master\7003&&redis-server.exe redis.windows.conf"

start cmd /k "G:&&cd G:\Tool\redis-windows-master\7004&&redis-server.exe redis.windows.conf"

start cmd /k "G:&&cd G:\Tool\redis-windows-master\7005&&redis-server.exe redis.windows.conf"

start cmd /k "G:&&cd G:\Tool\redis-windows-master\7006&&redis-server.exe redis.windows.conf"

start cmd /k "G:&&cd G:\Tool\redis-windows-master&&ruby redis-trib.rb create --replicas 1 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 127.0.0.1:7006"

exit

注意:

使用批处理文件时,可以用下面方法打打多个CMD窗口,并且每个窗口中执行多条命令。

start 用来启动一个应用

cmd /k 表示cmd后面的命令执行完后不关闭窗口。如果要在执行完成后关闭窗口可以用/c 。详细请使用cmd/?查看

"命令1&&命令2&&.." 将要执行的多条命令使用引号全部包起来,并且在命令间用&&分隔。如果只有一条命令则不用引号也可以。

4). 创建启动集群

由于创建启动集群需要redis-trib.rb文件,它是一个 Ruby 程序, 这个程序通过向实例发送特殊命令来完成创建新集群,检查集群或者对集群进行重新分片(reshared)等工作。

Windows的redis安装文件中是没有这个文件的,我们需要去官网下载Redis,官网的Redis是Linux版本,在其源码src文件夹下,将redis-trib.rb拷贝到本机中Redis的安装目录中

最后进入redis-trib.rb文件所在目录执行:ruby 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

这个命令在这里用于创建一个新的集群, 选项–replicas 1 表示我们希望为集群中的每个主节点创建一个从节点。之后跟着的其他参数则是这个集群实例的地址列表,3个master3个slave

redis-trib 会打印出一份预想中的配置给你看, 如果你觉得没问题的话, 就可以输入 yes ,redis-trib 就会将这份配置应用到集群当中,让各个节点开始互相通讯。

5). 连接集群进行测试

连接集群的指令:

redis-cli.exe -c -p 7000

java测试:

@Test

public voidtestRedis(){

JedisPoolConfig poolConfig =newJedisPoolConfig();

poolConfig.setMaxIdle(8);

Set nodes =newHashSet();

HostAndPort hostAndPort =newHostAndPort("127.0.0.1",7001);

HostAndPort hostAndPort1 =newHostAndPort("127.0.0.1",7002);

HostAndPort hostAndPort2 =newHostAndPort("127.0.0.1",7003);

HostAndPort hostAndPort3 =newHostAndPort("127.0.0.1",7004);

HostAndPort hostAndPort4 =newHostAndPort("127.0.0.1",7005);

HostAndPort hostAndPort5 =newHostAndPort("127.0.0.1",7006);

nodes.add(hostAndPort);

nodes.add(hostAndPort1);

nodes.add(hostAndPort2);

nodes.add(hostAndPort3);

nodes.add(hostAndPort4);

nodes.add(hostAndPort5);

JedisCluster jedisCluster =newJedisCluster(nodes,100000,poolConfig);//JedisCluster中默认分装好了连接池.

Map map =  jedisCluster.getClusterNodes();

jedisCluster.set("test","test");

System.out.println(jedisCluster.get("test"));

}

Redis集群数据分配策略:

采用一种叫做哈希槽 (hash slot)的方式来分配数据,redis cluster 默认分配了 16384 个slot,当我们set一个key 时,会用CRC16算法来取模得到所属的slot,然后将这个key分到哈希槽区间的节点上,具体算法就是:CRC16(key) % 16384

注意的是:必须要3个以后的主节点,否则在创建集群时会失败,三个节点分别承担的slot 区间是:

节点A覆盖0-5460;

节点B覆盖5461-10922;

节点C覆盖10923-16383.

所以上图中按照redis cluster的哈希槽算法:CRC16(‘name’)%16384

被分配到了7001端口的redis服务上。

至此,Redis Cluster在Windows上的配置就完成了!

上一篇下一篇

猜你喜欢

热点阅读