win7 X86、Redis 3.2.100、Ruby 2.2.6。
Redis官网不支持Windows,但可从 GitHub上下载Microsoft Open Tech group开发的Win64的版本。
下载地址:https://github.com/MSOpenTech/redis
将 redis-server.exe、redis-cli.exe 拷贝至目录:C:\Redis。
为方便读者,已将本文所有工具打包汇总,
下载地址:Windows Redis 集群搭建工具汇总。
下载地址:http://rubyinstaller.org/downloads/
安装时,勾选一下三个选项,可避免额外配置环境变量:
下载地址:
https://raw.githubusercontent.com/antirez/redis/unstable/src/redis-trib.rb
存储目录: C:\Redis
1、下载地址:https://rubygems.org/(笔者采用Rubygems-2.6.11)
2、解压后,运行文件setup.rb。
3、添加 Gem 源:
由于国内网络原因,导致 rubygems.org 存放在 Amazon S3 上面的资源文件间歇性连接失败,所以会与遇到 gem install rack 或 bundle install 的时候半天没有响应。解决办法如下:
1)移除掉 rubygems.org:
gem sources –remove https://rubygems.org/
2)换成 ruby-china 镜源:
gem sources -a http://gems.ruby-china.org/
3)查看已存在的源:
gem sources -l
4)安装 Redis 依赖
gem install redis
注:
在步骤2)中,某些读者可能参照其他博文,采用淘宝镜源:
gem sources -a https://ruby.taobao.org
出现错误提示如下:
这是因为:taobao Gems 源已停止维护,现由 ruby-china 提供镜像服务。
六、使用Redis cluster
要让集群正常运作,至少需要三个主节点,因此我们创建6个节点,三个主节点三个从节点。创建步骤如下:
1、C:\Redis目录下,创建6个文件夹:7000—7005。
2、创建配置文件 redis.conf。
以7000文件夹为例:
port 7000
cluster-enabled yes
cluster-config-file nodes-7000.conf
cluster-node-timeout 5000
appendonly yes
其他文件只需将 port 和 cluster-config-file 改成相应的即可
命令分析:
1)cluster-enabled:开启实例的集群模式。2)cluster-conf-file:设定保存节点配置文件的路径, 默认值为nodes.conf 。nodes.conf 节点配置文件无须人为修改, 而由 Redis 集群在启动时自动创建, 并在有需要时自动进行更新。
3)cluster-node-timeout:若半数以上master节点与故障节点通信超过(cluster-node-timeout),则认为该节点故障,自动触发故障转移操作。(单位:毫秒)
4)appendonly:开启后,每当Redis 执行一个改变数据集的命令时(比如SET),此命令会被追加到 AOF 文件的末尾。这样的话,当Redis 重新启时,程序就可以通过重新执行AOF 文件中的命令来达到重建数据集的目的。
3、C:\Redis目录下,创建启动脚本 start.bat
脚本命令如下:
@echo off
cd c:\Redis
start Redis-Server ./7000/redis.conf
start Redis-Server ./7001/redis.conf
start Redis-Server ./7002/redis.conf
start Redis-Server ./7003/redis.conf
start Redis-Server ./7004/redis.conf
start Redis-Server ./7005/redis.conf
4、创建集群
1)运行脚本 start.bat,会打开6个窗口,每个窗口承载一个 Redis 实例,端口从 7000 至 7005。同时,在 C:\Redis 文件夹下会出现 nodes-7000.conf 至 nodes-7005.conf 6个文件。
2)启动 cmd,切换至 C:\Redis目录,执行命令:
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
命令分析:
1)redis-trib.rb create:表示希望创建一个新的集群。2)replicas 1:表示为集群中的每个主节点创建一个从节点。后面其他参数表示实例的地址列表, 即:程序将使用这些地址所指示的实例来创建新集群。(节点角色由顺序决定,先master之后是slave。)
简单来说,上述命令指示 redis-trib 程序创建一个包含三个主节点和三个从节点的集群。
执行命令后,首先打印出配置信息。上图表示:
1)使用7000、7001、7002作为主节点。2)主从节点的对应关系。
3)各节点对应的 slots 范围。
例如 7000 这台机 slots : 0-5460 的意思是:
若 key 进行 CRC16 校验和的值介于 0-5460 范围内,则被存储至7000。
因此,使用前应对业务进行梳理,根据系统中 key 的特点来调整各个机器的slots范围,以避免 key 集中于部分机器上,以致集群的效果不大。
确认配置信息后,输入 yes 并回车确认, 集群将配置应用到各个节点, 并连接起(join)各个节点 —— 也即是, 让各个节点开始互相通讯。
配置成功后,redis-trib 将输出以下信息:
这表示集群中的 16384 个槽都有至少一个主节点在处理, 集群运作正常。
创建成功后,nodes-*.conf 将存储 master 和 slave 的对应关系。以 nodes-7000.conf 为例:
上图表示:当前节点(127.0.0.1:7000)节点ID:cb4ea842827dd927058ec5b3abd516f35c697006,主节点,节点编号为1,对应 slots 的范围:0-5460,对应的从节点:127.0.0.1:7003。
七、进入集群环境
C:\Redis>redis-cli -c -p 7000
八、测试
1、检查集群状态
C:\Redis> redis-trib.rb check 127.0.0.1:7000
若输出上述信息,则表示集群启动成功并处于ok状态。
2、从port 7003 set一个值,并从port 7005 get出来
九、参考资料