所需软件
Redis、Ruby语言运行环境、Redis的Ruby驱动redis-xxxx.gem、创建Redis集群的工具redis-trib.rb
安装redis
redis下载地址 https://github.com/MSOpenTech/redis/releases ; 下载Redis-x64-3.2.100.zip。
集群规划有三个节点的集群,每个节点有一主一备。需要6台虚拟机。
把 redis 解压后,再复制出 5 份,配置 三主三从集群。 由于 redis 默认端口号为 6379,那么其它5份的端口可以为6380,6381,6382,6383,6384。 并且把目录使用端口号命名
打开目录6379下有一个文件 redis.windows.conf,修改里面的端口号,以及集群支持配置。
并修改文件中的如下配置来支持集群:
cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 15000
appendonly yes
cluster-enabled 为yes, 开启实例的集群模式
cluster-node-timeout 调整为 15000,设置连接节点超时时间。
cluster-config-file nodes-6379.conf 是为该节点的配置信息,这里使用 nodes-端口.conf命名方法。服务启动后会在目录生成该文件。
编写一个 bat 来启动 redis,在每个节点目录下建立 start.bat,内容如下:
title redis-6380
redis-server.exe redis.windows.conf
安装ruby环境
安装ruby
下载地址:https://rubyinstaller.org/downloads/
redis的集群使用 ruby脚本编写,所以系统需要有 Ruby 环境 
安装时3个选项都勾选。
安装redis的ruby驱动redis-xxxx.gem
下载地址 https://rubygems.org/pages/download, 下载zip后解压,当前目录切换到解压目录中,
如 E:\rediscluster\rubygems-2.7.7\rubygems-2.7.7
然后在命令行执行 ruby setup.rb。
然后通过GEM 安装 Redis :切换到redis安装目录(6379目录下),需要在命令行中,执行 gem install redis
配置集群脚本redis-trib
下载地址 https://raw.githubusercontent.com/antirez/redis/unstable/src/redis-trib.rb
打开该链接如果没有下载,而是打开一个页面,那么将该页面保存为redis-trib.rb,建议保存到一个Redis的目录下,例如放到6379目录下。
集群的命令为(创建集群时执行)
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(6379)目录在命令行中执行
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测试
命令 redis-cli –c –h ”地址” –p “端口号” ; c 表示集群

springboot 测试
- 加入 gradle 依赖
compile('org.springframework.boot:spring-boot-starter-data-redis')
- 在 application.properties 文件中添加配置
spring.redis.cluster.nodes=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
- 编写 controller 进行简单测试
package com.code.springbootrediscluster.controller;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.data.redis.core.ValueOperations;import org.springframework.web.bind.annotation.*;import java.util.HashMap;import java.util.Map;@RestControllerpublic class RedisClusterController {@Autowiredprivate RedisTemplate<String, String> redisTemplate;@GetMapping("/set/{key}/{value}")public Map<String, String> set(@PathVariable String key, @PathVariable String value){ValueOperations<String,String> valueOperations = redisTemplate.opsForValue();valueOperations.set(key, value);Map<String, String> map = new HashMap<String, String>();map.put(key, value);return map;}@GetMapping("/get/{key}")public Map<String, String> get(@PathVariable String key){ValueOperations<String,String> valueOperations = redisTemplate.opsForValue();String value = valueOperations.get(key);Map<String, String> map = new HashMap<String, String>();map.put(key, value);return map;}}
- 通过浏览器测试


给redis设置密码(选做)
先给每个节点redis设置密码
// 获取当前密码config get requirepass// 设置密码config set requirepass 123456// 通过密码登录redis-cli -c -h 127.0.0.1 -p 6379 -a 123456

加入到springboot的配置文件中
spring.redis.database=0
spring.redis.cluster.nodes=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
spring.redis.password=123456
测试可以通过。注:如果不加 redis 密码,那么在启动的时候就会报错,因为在获取 redis 连接的时候没有权限。
