windows平台下redis集群搭建

来源:互联网 发布:淘宝主图多少尺寸 编辑:程序博客网 时间:2024/06/04 18:53

由于单位平时使用的都是windows平台的操作系统,一直想搭建一个Redis集群。网上也找了很多资料,都比较零零散散,今天自己手动搭建一次,把过程记录一下。


第一步:安装windows版本的redis

打开浏览器敲入redis官方地址:https://redis.io/

找到Download it 点击Check the downloads page,如下图:



找到windows版本的位置点击Learn more,进入github页面


在页面中我们找到 release page,并且点击


在页面中我们选择最新的64位版本 Redis-x64-3.2.100.zip,有兴趣的可以也把源码包下载下来。

解压缩后的文件列表如下:


这面的exe文件是我们需要的,docx文件是使用说明。

我们新建一个redis.conf文件把如下配置拷贝进去

bind 127.0.0.1port 6380#appendonly yes  #appendfilename "appendonly.6380.aof"  #logfile "redis.log"cluster-enabled yes  #cluster-config-file nodes-6380.conf  #cluster-node-timeout 15000  #cluster-slave-validity-factor 10  #cluster-migration-barrier 1  #cluster-require-full-coverage yes  #INFO stats/commandstats#save 900 1#save 300 10#save 60 10000
这里面我们使用的了集群的最小配置项,主要的配置属性项为cluster-enabled  设置为yes,告诉redis以集群方式运行。

由于redis集群最少的redis实例为3台,这里面我们创建6个实例,每两台redis 互为主从备份。(网上看了很多资料,很多人的实例都是3台或者6台)

这时,我们新建一个bat文件,方便启动。

内容为 redis-server.exe ./redis.conf ,让redis以我们的配置文件方式运行。

这里面我们复制出6个文件,端口依次为 6379、6380、6381、6382、6383、6384


第二步。配置redis集群

redis集群是采用Ruby语言编写,这时候我们需要安装windows版本的Ruby

下载最新的版本即可,如下图:

跟着向导一步一步安装即可。

我安装在C:\Ruby22-x64 这个位置。

这是我们在cmd窗口输入 gem -v命令,可以查看版本信息。

这时候我们输入命令

gem install redis  
这里我们中国的用户可能会被墙掉,无法连接服务器,这时候我需要把原有的source给删掉,添加一个淘宝镜像即可。

gem sources 


查看现有的源,删除默认的源

gem source -r http://rubygems.org/ 


添加淘宝镜像 

gem sources -a https://ruby.taobao.org/

输入如下命令,查看是否成功

gem sources -l


成功后,我们继续执行

gem install redis  


这时候应该还是不能成功安装,会报错 一个403 的什么错误,这是因为镜像是https协议,这时候我们需要在ruby下面安装一个证书。证书可以从下面的网盘地址下载。

链接: https://pan.baidu.com/s/1eSzUkCy 密码: xn62

把这个证书放入任意本地目录即可,我放在C:\Ruby22-x64\lib 下面。

这是需要在系统环境变量中添加如下环境变量:

变量名:SSL_CERT_FILE 变量值:就是证书的位置



之后在执行:

gem install redis  
会提示安装成功,之后我们就可以完成redis的集群操作。


第三步、创建集群

此时我们还需要一个  .rb 的ruby文件来启动集群。 redis-trib.rb 文件可以在下载的windows版本 redis的源码src中找到,拷贝下来即可。

这是我们在 redis-trib.rb 所在目录打开cmd窗口。

执行下面命令:

ruby redis-trib.rb create --replicas 1 127.0.0.1:6379 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

系统会根据redis的状态自动创建好集群和主从配置。


这是我们只要输入 yes就行。之后会提示集群创建成功。


不知道为什么windows的集群创建好之后,各个redis实例会不停刷下图所示的日志。本人也查了好多配置开关还是没法关掉这些日志,记得以前在linux下面搭建集群成功后,不会一直刷新日志,希望有那位大神知道原因,告诉小弟一下。



这是我们在任意一台redis目录下执行如下命令:

redis-cli.exe -c -p 6389

这个 -c 参数一定要加上,不加的话我们添加数据时,如果这个key不再本机的slot上面会提示出错,有了 -c的命令会自动切换到目标redis上面, -p 代表端口号,不添加默认为6379  也可以添加 -h参数 ,本次所有都为本机,所以没有添加。


cluster info

可以查看当前redis集群状态



cluster nodes

可以查看各个节点之间的关系和主从关系。

默认redis集群如果有一个 主从 同时挂掉,这个集群即为不可用状态。

或者 多个 master挂掉 集群也为不可用状态。

这个大家搭建好之后,可以手动测试一下。



第四步、客户端连接

 java连接redis还是通过Jedis连接,高版本的Jedis里面自带集群配置。

通过idean我们创建一个简单maven工程

添加maven依赖

<dependency>    <groupId>redis.clients</groupId>    <artifactId>jedis</artifactId>    <version>2.7.2</version>    <type>jar</type>    <scope>compile</scope></dependency>

 添加一个测试程序

 public static void main(String[] args) {        String key = "test";        // 这东西 可以直接看到key 的分片数,就能知道放哪个 节点        System.out.println(JedisClusterCRC16.getSlot(key));        Set<HostAndPort> jedisClusterNodes = new HashSet<HostAndPort>();        jedisClusterNodes.add(new HostAndPort("127.0.0.1", 6379));        jedisClusterNodes.add(new HostAndPort("127.0.0.1", 6380));        jedisClusterNodes.add(new HostAndPort("127.0.0.1", 6381));        // 3个master 节点        JedisCluster jc = new JedisCluster(jedisClusterNodes);        int i=0;        for(i=0;i<1000;i++){            System.out.println(jc.get(i+"key"));            jc.set(i+"key", "something"+i);        }        i=0;        for(i=0;i<1000;i++){            String value = jc.get(i+"key");            System.out.println(value);        }    }


通过 run/debug 执行程序。

这时候如果我们手动把 79端口的redis给干掉。再次执行该程序可以看到集群仍然可以工作,而不需要修改已经配置好的79端口号。