在win系统搭建redis集群方法

我这边主要是搭建出来做测试用的,真实环境还是要使用linux。

环境需求:

  • Redis-win-3.2.100
  • Ruby-win-2.2.4-x64
  • Redis-3.2.2.gem(ruby驱动,需要对应redis的版本号)
  • Redis-trib.rb源码

1.安装Redis,并运行3个实例(Redis集群需要至少3个以上节点,低于3个无法创建);

2.使用redis-trib.rb工具来创建Redis集群,由于该文件是用ruby语言写的,所以需要安装Ruby开发环境,以及驱动redis-xxxx.gem。

1.下载并安装Redis

GitHub路径如下:https://github.com/MSOpenTech/redis/releases/

Redis提供msi和zip格式的下载文件,这里下载zip格式3.2.100版本

将下载到的Redis-win-3.2.100.zip解压即可,为了方便使用,建议放在盘符根目录下,并修改目录名为Redis,如:C:\Redis 或者D:\Redis。当然也可以放在桌面,只要你喜欢。

通过配置文件来启动3个不同的Redis实例,由于Redis默认端口为6379,所以这里使用了7000、7001、7002来运行3个Redis实例。

注意:为了避免不必要的错误,配置文件尽量保存为utf8格式,并且不要包含注释;

7000的关键配置文件如下:

port 7000      
loglevel notice    
logfile "d:/logs/redis/redis7000.log"       
appendonly yes
appendfilename "appendonly.7000.aof" 
  
#下面是集群相关的
cluster-enabled yes                                    
cluster-config-file nodes.7000.conf
cluster-node-timeout 15000
cluster-slave-validity-factor 10
cluster-migration-barrier 1
cluster-require-full-coverage yes

7001的关键配置文件如下:

port 7001      
loglevel notice    
logfile "d:/logs/redis/redis7001.log"       
appendonly yes
appendfilename "appendonly.7001.aof" 
  
#下面是集群相关的
cluster-enabled yes                                    
cluster-config-file nodes.7001.conf
cluster-node-timeout 15000
cluster-slave-validity-factor 10
cluster-migration-barrier 1
cluster-require-full-coverage yes

7002的关键配置文件如下:

port 7000      
loglevel notice    
logfile "d:/logs/redis/redis7002.log"       
appendonly yes
appendfilename "appendonly.7002.aof" 
  
#下面是集群相关的
cluster-enabled yes                                    
cluster-config-file nodes.7002.conf
cluster-node-timeout 15000
cluster-slave-validity-factor 10
cluster-migration-barrier 1
cluster-require-full-coverage yes
注:
port 7000       #端口号
loglevel notice    #日志的记录级别,notice是适合生产环境的
logfile "logs/redis7000_log.txt"      #指定log的保持路径,默认是创建在Redis安装目录下,如果有子目录需要手动创建,如此处的Logs目录
syslog-enabled yes                         #是否使用系统日志
syslog-ident redis7000                   #在系统日志的标识名
appendonly yes                              #数据的保存为aof格式
appendfilename "appendonly.7000.aof"    #数据保存文件
cluster-enabled yes                                    #是否开启集群
cluster-config-file nodes.7000.conf
cluster-node-timeout 15000
cluster-slave-validity-factor 10
cluster-migration-barrier 1
cluster-require-full-coverage yes

2.启动Redis服务

./7000/redis-server.exe redis.conf
./7000/redis-server.exe redis.conf
./7000/redis-server.exe redis.conf

3.下载并安装ruby

  3.1 下载路径如下:

http://dl.bintray.com/oneclick/rubyinstaller/rubyinstaller-2.2.4-x64.exe

下载后,双击安装即可,同样,为了操作方便,也是建议安装在盘符根目录下,如: C:\Ruby22-x64 ,安装时这里选中后两个选项,

意思是将ruby添加到系统的环境变量中,在cmd命令中能直接使用ruby的命令

   3.2 下载ruby环境下Redis的驱动,考虑到兼容性,这里下载的是3.2.2版本

https://rubygems.org/gems/redis/versions/3.2.2

注意:下载在页面右下角相关连接一项中

 

安装该驱动,命令如下:

gem install --local path_to_gem/filename.gem

a001

4.创建Redis集群

cmd下切换到Redis目录,使用redis-trib.rb来创建Redis集群:

redis-trib.rb create --replicas 0 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002

执行结果:

a002

当出现提示时,需要手动输入yes,输入后,当出现以下内容,说明已经创建了Redis集群

001

检验是否真的创建成功,输入以下命令:

   redis-trib.rb check 127.0.0.1:7000

出现以下信息,说明创建的Redis集群是没问题的

002

启动效果图:

a003

 

 

 

 

 

 

以下是测试结果:a004

测试环境:

apache-tomcat-8.0.47

两个war包,A包使用7000端口的Redis,B包使用7001端口Redis。

然后分别设置缓存、读取缓存、发布redis消息;

图片中指向的数据表示一致。

1 Comment

  1. Alan Author 一月 5, 2018 (1:22 下午)

    测试的代码是:
    @Autowired
    private IRedisMessageService redisMessageService;

    @Autowired
    private CacheProvider cacheProvider;

    cacheProvider.put(“tsetString”, “string” + DateUtil.getTime(), 0);
    cacheProvider.put(“testInt”, DateUtil.getTime(), 0);

    cacheProvider.put(“testObject”, new Model(), 0);

    try {
    StringBuffer sb = new StringBuffer();
    sb.append(“tsetString:” + cacheProvider.get(“tsetString”))
    .append(“\ntestInt:” + cacheProvider.get(“testInt”))
    .append(“\ntestObject:” + cacheProvider.get(“testObject”));

    redisMessageService.sendMessage(ConstantRedis.CHANNEL_TEST, sb.toString());
    resp.setInfo(sb.toString());
    } catch (IllegalServiceException e) {
    e.printStackTrace();
    }

Leave a Comment