Windows下搭建RedisCluster集群

2017-10-11 12:04:54来源:oschina作者:风羽影人点击

分享
一.准备工作

1.Redis


Redis官方只有Linux版本,并不支持Windows版本。但微软的开源项目组维护了Windows64位的版本。
详见地址:https://github.com/MicrosoftArchive/redis.此次下载的版本为Redis-x64-3.2.100.zip,也msi版本安装,推荐使用zip压缩包的方式。解压如下图所示:
输入图片说明


其中redis-server.exe为redis启动程序,redis.windows.conf是redis的配置文件,redis-cli.exe是redis的连接客户端,也可使用图形化客户端工具Redis Desktop Manager.


2.Ruby运行环境


Redis集群使用Ruby语言编写的,因此需要Ruby语言环境的支持。下载地址: https://rubyinstaller.org/downloads


输入图片说明


安装时以上选项全部勾选!


3.RubyGems


RubyGems是Ruby的打包的管理框架,有点类似前端的webpack。下载地址: https://rubygems.org/pages/download.
Windows下载zip压缩包,解压,运行文件夹里setup.rb安装RubyGems。
安装完成后,在命令行工具里就可查看到安装的ruby,gems版本。输入图片说明


由于墙的原因,gems自带的源访问速度很慢,这里添加国内的镜像,Ruby China (淘宝的镜像的管理工作将交由Ruby China负责)。


在Cmd下运行:


1.gem source -l 查看当前所有的源
2.gem source -a xxx 添加源
3.gem source -r xxx 删除源
4.gem install redis 安装Redis依赖

输入图片说明


二.搭建Redis Cluster

1.创建节点文件


要让集群正常运作至少需要三个主节点, 不过在刚开始试用集群功能时, 强烈建议使用六个节点: 其中三个为主节点, 而其余三个则是各个主节点的从节点。详见官方命令教程:http://doc.redisfans.com/topic/cluster-tutorial.html#id5.


将准备工作中下载的Redis-x64-3.2.100.zip解压后的文件,放入指定目录,并复制成6份相同的文件夹,以节点端口号命名为6380-6385。输入图片说明


2.修改节点配置文件


修改每个文件夹下的配置文件redis.windows.conf,这里以6380为例,设置一下几个属性, 注意将前面的注释符号#去掉


port 6380
cluster-enabled yes
cluster-config-file nodes-6380.conf
cluster-node-timeout 15000
appendonly yes

文件中的 cluster-enabled 选项用于开实例的集群模式, 而 cluster-conf-file 选项则设定了保存节点配置文件的路径, 默认值为 nodes.conf 。


节点配置文件无须人为修改, 它由 Redis 集群在启动时创建, 并在有需要时自动进行更新。


3.创建启动脚本文件
在每个文件夹下创建脚本start.bat,创建脚本目的只是不需要重复敲命令, 文件内容如下:


redis-server.exe redis.windows.conf

4.创建集群

分别运行6个文件夹里的start.bat,来启动6个Redis实例。

在外层文件夹下,创建一个ruby文件,redis-trib.rb. 内容可以从源码获取: https://github.com/MicrosoftArchive/redis/releases,

cmd下执行命令


redis-trib.rb create --replicas 1 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383
127.0.0.1:6384 127.0.0.1:6385

命令的意义如下:给定 redis-trib.rb 程序的命令是 create , 这表示我们希望创建一个新的集群。
选项 --replicas 1 表示我们希望为集群中的每个主节点创建一个从节点。
之后跟着的其他参数则是实例的地址列表, 我们希望程序使用这些地址所指示的实例来创建新集群。
简单来说, 以上命令的意思就是让 redis-trib 程序创建一个包含三个主节点和三个从节点的集群。


接着, redis-trib 会打印出一份预想中的配置给你看, 如果你觉得没问题的话, 就可以输入 yes , redis-trib 就会将这份配置应用到集群当中:
输入图片说明


输入 yes 并按下回车确认之后, 集群就会将配置应用到各个节点, 并连接起(join)各个节点 —— 也即是, 让各个节点开始互相通讯。如果一切正常的话, redis-trib 将输出以下信息:
输入图片说明


这表示集群中的 16384 个槽都有至少一个主节点在处理, 集群运作正常。


下面看看节点的配置文件里有什么内容:
输入图片说明


文件中清楚的说明了6380/6381/6382是主节点,6383/6384/6385是从节点,并且一 一对应。


三.客户端测试

本例使用Spring Boot集成Redisson,进行测试,Spring Boot版本为1.5.2.RELEASE 。


添加Maven依赖

org.redisson
redisson
3.3.2
配置RedissonClient

address变量值可以配置在application.properties属性文件里,这里不在演示。
注意此处的Config 使用集群配置


@SpringBootConfiguration
public class RedisLoader {
@Bean(name = "clusterRedissonClient")
public RedissonClient clusterServerConfig(){
Config config = new Config();
config.useClusterServers()
.addNodeAddress("127.0.0.1:6380")
.addNodeAddress("127.0.0.1:6381")
.addNodeAddress("127.0.0.1:6382")
.addNodeAddress("127.0.0.1:6383")
.addNodeAddress("127.0.0.1:6384")
.addNodeAddress("127.0.0.1:6385");
return Redisson.create(config);
}
}

3.测试代码


@SpringBootTest
@RunWith(SpringJUnit4ClassRunner.class)
public class RedisTest {
@Resource(name = "clusterRedissonClient")
private RedissonClient redissonClient;@Test
public void t(){
RBucket name = redissonClient.getBucket("name");
name.set("张三");
}
@Test
public void t1(){
RBucket name = redissonClient.getBucket("name");
String s = name.get();
System.out.println(s);
}
}

4.设置测试运行结果:
输入图片说明
日志中的: master: redis://127.0.0.1:6381 added for slot ranges: [[10923-16383]],意思是6381机器对应卡槽范围是10923-16383。对key 做 CRC16校验后,值在 10923-16383范围内都会存到这个端口里。


我们现在看看,保存在哪个端口上了:
输入图片说明


可以清晰的看出被保存在6381端口上了,而6384是6381的从节点,因此也有该数据。


5.获取测试运行结果


输入图片说明


我们看到已经从集群中获取到刚才设置的值。

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台