Springboot2.X集成Redis Cluster Lettuce

 

搭建 Redis集群,三个主节点,三个从节点,多主节点为了分布集群,从节点是为了高可用性。

一、     Windows环境下Redis Cluster环境搭建

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

 

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
spring.redis.cluster.timeout=1000
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,有如下显示,证明成功。

 

看到标记信息,则表示启动成功。

 

版权声明:本文为xymBlog原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/xymBlog/p/9300574.html