1.導入依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<exclusions>
<exclusion>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.4.1</version>
</dependency>
2.配置properties
#jedis
spring.redis.jedis.pool.max-active=100
spring.redis.jedis.pool.min-idle=10
spring.redis.cluster.max-redirects=5
spring.redis.timeout=10000
#中心集群
spring.redis.cluster.nodes=192.168.1.126:30001,192.168.1.126:30002,192.168.1.126:30003,192.168.1.126:30004,192.168.1.126:30005,192.168.1.126:30006,192.168.1.126:30004,192.168.1.126:30005,192.168.1.126:30006
3.配置configuration
package com.offerslook.setting.config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.data.redis.RedisProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisClusterConfiguration;
import org.springframework.data.redis.connection.RedisNode;
import org.springframework.data.redis.connection.RedisStandaloneConfiguration;
import org.springframework.data.redis.connection.jedis.JedisClientConfiguration;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.StringRedisTemplate;
import redis.clients.jedis.JedisPoolConfig;
import java.util.List;
@Configuration
public class JedisConfig {
@Autowired
private RedisProperties redisProperties;
private JedisPoolConfig jedisPoolConfig() {
JedisPoolConfig poolConfig = new JedisPoolConfig();
poolConfig.setMaxIdle(redisProperties.getJedis().getPool().getMaxIdle());
poolConfig.setMaxTotal(redisProperties.getJedis().getPool().getMaxActive());
poolConfig.setMaxWaitMillis(redisProperties.getJedis().getPool().getMaxWait().toMillis());
poolConfig.setTimeBetweenEvictionRunsMillis(30000);
poolConfig.setTestOnBorrow(true);
return poolConfig;
}
@Bean(name = "stringRedisTemplate")
public StringRedisTemplate masterStringRedisTemplate() {
RedisClusterConfiguration configuration = redisClusterConfiguration(redisProperties.getCluster().getNodes());
JedisPoolConfig poolConfig = jedisPoolConfig();
JedisConnectionFactory factory = new JedisConnectionFactory(configuration, poolConfig);
factory.afterPropertiesSet();
return new StringRedisTemplate(factory);
}
@Bean(name = "singleStringRedisTemplate")
public StringRedisTemplate codisStringRedisTemplate() {
RedisStandaloneConfiguration configuration = standaloneConfiguration("127.0.0.1",6379);
JedisPoolConfig poolConfig = jedisPoolConfig();
JedisClientConfiguration clientConfiguration = JedisClientConfiguration.builder().
usePooling().poolConfig(poolConfig).build();
JedisConnectionFactory factory = new JedisConnectionFactory(configuration, clientConfiguration);
factory.afterPropertiesSet();
return new StringRedisTemplate(factory);
}
/**
* 配置redis集群
* @param nodes
* @return
*/
private RedisClusterConfiguration redisClusterConfiguration(List<String> nodes) {
RedisClusterConfiguration redisClusterConfiguration = new RedisClusterConfiguration();
for (String ipPort : nodes) {
String[] ipPortPair = ipPort.split(":");
redisClusterConfiguration.addClusterNode(new RedisNode(ipPortPair[0].trim(), Integer.parseInt(ipPortPair[1].trim())));
}
redisClusterConfiguration.setMaxRedirects(redisProperties.getCluster().getMaxRedirects());
return redisClusterConfiguration;
}
/**
* 設置單機redis
* @param url
* @param port
* @return
*/
private RedisStandaloneConfiguration standaloneConfiguration(String url,int port) {
return new RedisStandaloneConfiguration(url,port);
}
}