Springboot2.X集成Redis Cluster Lettuce
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,有如下显示,证明成功。
看到标记信息,则表示启动成功。