Springboot2.X集成Redis Cluster Lettuce

一、     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,有如下显示,证明成功。

 

猜你喜欢

转载自www.cnblogs.com/xymBlog/p/9300574.html