一 所需软件:Redis、Ruby语言运行环境、Redis的Ruby驱动、创建Redis集群的工具redis-trib.rb
二 安装配置redis
redis下载地址: https://github.com/MSOpenTech/redis/releases; 下载Redis-x64-3.2.100.zip。
集群规划有三个节点的集群,每个节点有一主一备。需要6台虚拟机(也就是后面的六个Redis文件夹)。
把 redis 解压后,再复制出 5 份,配置 三主三从集群。 由于 redis 默认端口号为 6379,那么其它5份的端口可以为6380,6381,6382,6383,6384。 并且把目录(文件夹名字)使用端口号命名。
打开目录6379下有一个文件 redis.windows.conf,修改里面的端口号,以及集群支持配置。
打开目录6379下有一个文件 redis.windows.conf,修改里面的端口号,以及集群支持配置(记得一定要把port前面的#号去掉,那个是注释,如果不把注释去掉搭建集群会失败)。
同理修改刚刚这个文件( redis.windows.conf)其他配置来支持集群
cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 15000
appendonly yes
修改以上配置的原因:
如果cluster-enabled 不为yes, 那么在使用JedisCluster集群代码获取的时候,会报错。
cluster-node-timeout 调整为 15000,那么在创建集群的时候,不会超时。
cluster-config-file nodes-6379.conf 是为该节点的配置信息,这里使用 nodes-端口.conf命名方法。服务启动后会在目录生成该文件。
(要注意的是以上配置的前面都会有一个#符号,记得把它去掉)
在6379这个目录下编写一个 bat 来启动 redis,在每个节点目录下建立 start.bat,内容如下:
title redis-6380
redis-server.exe redis.windows.conf
注意,刚刚以上配置6379的 redis.windows.conf文件在另外5个文件夹(6380,6381,6382,6383,6384)也操作一边
三 安装Ruby
redis的集群使用 ruby脚本编写,所以系统需要有 Ruby 环境,去百度搜索关键字"ruby下载安装"即可,这个比较简单,就不做过多解释
安装图如下(安装时3个选项都勾选):
四 安装Redis的Ruby驱动
下载地址 https://rubygems.org/pages/download, 下载后解压,然后切换到解压目录中,D:\Program Files\redis\Ruby25-x64 打开命令行(cmd), 在命令行执行: ruby setup.rb。
然后GEM 安装 Redis :切换到redis安装目录,需要在命令行中,执行 gem install redis
五 安装集群脚本redis-trib
下载地址 https://raw.githubusercontent.com/antirez/redis/unstable/src/redis-trib.rb
打开该链接如果没有下载,而是打开一个页面,那么将该页面保存为redis-trib.rb,点击鼠标保存到一个Redis的目录下,最好保存6份,让每一个集群节点都有一份
集群的命令为 :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
代码解释:–replicas 1 表示每个主数据库拥有从数据库个数为1。master节点不能少于3个,所以我们用了6个redis
六 启动每个节点并且执行集群构建脚本
把每个节点下的 start.bat双击启动,然后打开命令行切换你Redis安装目录中执行集群创建的命令:
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
注意:如果上面的语句执行不成功。可以在前面加上ruby再运行。
(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
)
会出现如下图的情况
然后中间期间会出现 Can I set the above configuration? (type ‘yes’ to accept): 请确定并输入 yes 。成功后的结果如下
七测试
命令 redis-cli –c –h ”127.0.0.1” –p “6379” ; (解释一下:c 表示集群)
输入dbsize 来查询记录总数
这样子就已经是配置成功了,当你想用Redis集群的时候,就打开6379-6384文件夹下的start.bat文件,让它们运行起来就行。这个三主三从模式是关闭掉其中一个主节点(6379-6381),它们的副节点(6382-6384)就会自动变为刚刚下线的主节点(如果刚刚下线的主节点再次上线,会变为刚刚晋升为主节点的副节点),可以全部关闭所有的主节点或者全部的副节点,也就是节点数要大于等于3,不然会报错。
八Java代码连接Redis集群的实例
public static JedisCluster getJedis() {
JedisPoolConfig config=new JedisPoolConfig();
config.setMaxTotal(30);
config.setMaxIdle(10);
JedisCluster jedisCluster=null;
try {
Set<HostAndPort> jedisClusterNode=new HashSet<HostAndPort>();
jedisClusterNode.add(new HostAndPort("127.0.0.1", 6379));
jedisClusterNode.add(new HostAndPort("127.0.0.1", 6380));
jedisClusterNode.add(new HostAndPort("127.0.0.1", 6381));
jedisClusterNode.add(new HostAndPort("127.0.0.1", 6382));
jedisClusterNode.add(new HostAndPort("127.0.0.1", 6383));
jedisClusterNode.add(new HostAndPort("127.0.0.1", 6384));
jedisCluster=new JedisCluster(jedisClusterNode, config);
}catch(Exception e) {
e.printStackTrace();
}
return jedisCluster;
}