此篇接上一个文章springboot和Redis单机版的整合
https://www.cnblogs.com/lin530/p/12019023.html
下面接着介绍和Redis集群版的整合。
1.第一步惯例先导入依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.0.1</version> </dependency>
2.配置application.yml文件,这里没有配置其他多余的东西,需要其他功能的自行加上。
spring:
redis:
cluster:
nodes: 192.168.159.104:7001,192.168.159.104:7002,192.168.159.104:7003,192.168.159.104:7004,192.168.159.104:7005,192.168.159.104:7006
注意格式。
3.为了方便springboot初始化,采用Java配置文件。
先提供一个pojo封装信息RedisProperties
package com.bai.springdemo1.config; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.PropertySource; import org.springframework.stereotype.Component; //依赖注入 @Component //该注解用于读取配置文件中的属性,其中prefix表示前缀; @PropertySource("classpath:application.yml") @ConfigurationProperties(prefix = "spring.redis.cluster") public class RedisProperties { private int expireSeconds; private String nodes; private int commandTimeout; public int getExpireSeconds() { return expireSeconds; } public void setExpireSeconds(int expireSeconds) { this.expireSeconds = expireSeconds; } public String getNodes() { return nodes; } public void setNodes(String nodes) { this.nodes = nodes; } public int getCommandTimeout() { return commandTimeout; } public void setCommandTimeout(int commandTimeout) { this.commandTimeout = commandTimeout; } @Override public String toString() { return "RedisProperties{" + "expireSeconds=" + expireSeconds + ", nodes='" + nodes + '\'' + ", commandTimeout=" + commandTimeout + '}'; } }
此处介绍一下可能遇到的坑,ConfigurationProperties注解在现在的高版本中取消了一些功能,可能导致读取不到配置信息,需要配置一下。
手动在ConfigurationProperties上面添上注解@PropertySource("classpath:application.yml")。然后再添加一个依赖即可。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
如果idea上方仍有红色提示信息,不必理会,测试一下能访问到配置文件即可。若想不提示,可自行去除。
4.配置一下Java格式的配置文件RedisClusterConfig,通过注解可以实现随系统自动初始化。
package com.bai.springdemo1.config; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import redis.clients.jedis.HostAndPort; import redis.clients.jedis.JedisCluster; import java.util.HashSet; import java.util.Set; @Configuration public class RedisClusterConfig { @Autowired private RedisProperties redisProperties; @Bean public JedisCluster getJedisCluster(){ //获取redis集群的ip及端口号等相关信息; String[] serverArray = redisProperties.getNodes().split(","); Set<HostAndPort> nodes = new HashSet<>(); //遍历add到HostAndPort中; for (String ipPort : serverArray) { String[] ipPortPair = ipPort.split(":"); nodes.add(new HostAndPort(ipPortPair[0].trim(), Integer.valueOf(ipPortPair[1].trim()))); } //构建对象并返回; return new JedisCluster(nodes, redisProperties.getCommandTimeout()); } }
5.全部配置完成即可进行使用。别忘了调用的时候注入jedisCluster
@Autowired private JedisCluster jedisCluster;
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot和Redis集群版的整合 - Python技术站