1pom配置引入
<!-- 支持Redis集群 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- 实现Jedis连接,一个连接池的作用 -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
2application.properties配置
#Redis 单机配置
# REDIS (RedisProperties)
# Redis数据库索引(默认为0)
spring.redis.database=0
# Redis服务器地址
#spring.redis.host=localhost
# Redis服务器连接端口
#spring.redis.port=6379
# Redis服务器连接密码(默认为空)
spring.redis.password=
# 连接池最大连接数(使用负值表示没有限制)
spring.redis.jedis.pool.max-active=8
# 连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.jedis.pool.max-wait=-1
# 连接池中的最大空闲连接
spring.redis.jedis.pool.max-idle=8
# 连接池中的最小空闲连接
spring.redis.jedis.pool.min-idle=0
# 连接超时时间(毫秒)
spring.redis.timeout=0
spring.redis.commandTimeout=5000
# redis.cluster集群节点
spring.redis.cluster.nodes=192.168.43.187:6379,192.168.43.187:6380,192.168.43.187:6381
3文件配置java类
- 加载集群节点,创建集群对象
@Configuration
public class RedisConfig {
//集群方式 配置集群
@Value("${spring.redis.cluster.nodes}")
private String clusterNodes;
@Value("${spring.redis.timeout}")
private int timeout;
@Value("${spring.redis.jedis.pool.max-idle}")
private int maxIdle;
@Value("${spring.redis.jedis.pool.max-wait}")
private long maxWaitMillis;
@Value("${spring.redis.commandTimeout}")
private int commandTimeout;
@Bean
public JedisCluster getJedisCluster() {
String[] cNodes = clusterNodes.split(",");
Set<HostAndPort> nodes =new HashSet<>();
//分割出集群节点
for(String node : cNodes) {
String[] hp = node.split(":");
nodes.add(new HostAndPort(hp[0].trim(),Integer.parseInt(hp[1].trim())));
}
JedisPoolConfig jedisPoolConfig =new JedisPoolConfig();
jedisPoolConfig.setMaxIdle(maxIdle);
jedisPoolConfig.setMaxWaitMillis(maxWaitMillis);
//创建集群对象
// JedisCluster jedisCluster = new JedisCluster(nodes,commandTimeout);
return new JedisCluster(nodes,commandTimeout,jedisPoolConfig);
}
}
- 调用集群,实现RedisClientTemplate。其实就是调用RedisConfig 的get获取集群对象,来操作Redis,基本的操作
@Service
public class RedisClientTemplate {
private static final Logger log=LoggerFactory.getLogger(RedisClientTemplate.class);
private static final SortingParams List = null;
@Autowired
private RedisConfig jedisClusterConfig;
public boolean setToRedis(String key, Object value) {
try {
String str = jedisClusterConfig.getJedisCluster().set(key,String.valueOf(value));
System.out.println("str=="+str);
if ("OK".equals(str))
return true;
} catch (Exception ex) {
log.error("setToRedis:{Key:"+key+",value"+value+"}",ex);
}
return false;
}
public boolean setMusicListToRedis(String key, List value) {
List list = value ;
try {
Long str = jedisClusterConfig.getJedisCluster().lpush(key,"list","list","list");
System.out.println("str=="+str);
if ("OK".equals(str))
return true;
} catch (Exception ex) {
log.error("setToRedis:{Key:"+key+",value"+value+"}",ex);
}
return false;
}
public Object getRedis(String key) {
String str = null;
try {
str = jedisClusterConfig.getJedisCluster().get(key);
} catch (Exception ex) {
}
return str;
}
}
4开启3个Redis服务配置了端口就可以正常操作了。
Redis集群的可能遇到的一些问题也在之前提到过
https://blog.csdn.net/qq_35736252/article/details/88814233