一、 Windows环境下Redis Cluster环境搭建
搭建 Redis集群,三个主节点,三个从节点,多主节点为了分布集群,从节点是为了高可用性。
1. 下载redis
地址:https://github.com/MicrosoftArchive/redis/releases
此次案例中使用的版本为3.0.503 Source code可以一起下载,下文会用到。
2. 安装redis
解压Redis-x64-3.0.503.zip,并复制,如下图
3. 修改每台redis.windows.conf,修改里面的端口号,以及集群的配置
port 6380
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 15000
appendonly yes
4. 在每个目录下面新建一个bat脚本,用于启动每台redis服务
5. 安装Ruby
Redis 的集群是用Ruby脚本编写,所以系统需要有 Ruby 环境。
下载地址:https://download.csdn.net/download/u011060797/10537341
安装,下面红框标记的地方必选。
验证:打开cmd窗口,输入ruby –version出现版本号 表示安装成功
6. 安装redis的ruby驱动rubygems
地址:https://rubygems.org/pages/download
可能有点慢,也可以去下面这个地址下载
https://download.csdn.net/download/u011060797/10537415
7. 解压到6380文件夹下面(任意位置,此处只是为了方便放在一起)
进入rubygems-2.7.7目录下面执行cmd命令:ruby setup.rb
8. 切换到6380目录下面,执行命令gem install redis
9. 进入每个端口的文件夹,执行start-server.bat文件,启动每个节点的服务
10. 安装集群脚本redis-trib
找到第一步下载的source code,解压,将里面src路径下面的redis-trib.rb 复制到6380文件夹下面
并在当前目录执行以下命令
ruby 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
注:如果出现Node is not empty,先清空所有端口目录下面的nodes.conf和dump.rdb文件再重复执行第9步,然后再执行上面的命令。
注意途中标记的红色地方,yes。
11. 验证集群是否启动成功
看到标记信息,则表示启动成功。
二、 Springboot2.0.3集成redis cluster
1. 新建工程,pom.xml文件中添加redis支持
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2. 配置application.properties
1 spring.redis.cluster.nodes=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 2 3 spring.redis.cluster.timeout=1000 4 5 spring.redis.cluster.max-redirects=3
3. 新建下面的两个类
@Configuration public class RedisConfiguration { @Resource private LettuceConnectionFactory myLettuceConnectionFactory; @Bean public RedisTemplate<String, Serializable> redisTemplate() { RedisTemplate<String, Serializable> template = new RedisTemplate<>(); template.setKeySerializer(new StringRedisSerializer()); template.setValueSerializer(new GenericJackson2JsonRedisSerializer()); template.setConnectionFactory(myLettuceConnectionFactory); return template; } }
@Configuration public class RedisFactoryConfig { @Autowired private Environment environment; @Bean public RedisConnectionFactory myLettuceConnectionFactory() { Map<String, Object> source = new HashMap<String, Object>(); source.put("spring.redis.cluster.nodes", environment.getProperty("spring.redis.cluster.nodes")); source.put("spring.redis.cluster.timeout", environment.getProperty("spring.redis.cluster.timeout")); source.put("spring.redis.cluster.max-redirects", environment.getProperty("spring.redis.cluster.max-redirects")); RedisClusterConfiguration redisClusterConfiguration; redisClusterConfiguration = new RedisClusterConfiguration(new MapPropertySource("RedisClusterConfiguration", source)); return new LettuceConnectionFactory(redisClusterConfiguration); } }
4. 执行测试
@SpringBootTest @RunWith(SpringRunner.class) public class RedisConfigurationTest { @Autowired private RedisTemplate redisTemplate; @Test public void redisTemplate() throws Exception { redisTemplate.opsForValue().set("author", "Damein_xym"); } }
5. 验证,使用Redis Desktop Manager 连接redis节点,查看里面的数据是否存在author,有如下显示,证明成功。