|
@@ -5,6 +5,7 @@ import com.fasterxml.jackson.annotation.JsonAutoDetect;
|
|
|
import com.fasterxml.jackson.annotation.PropertyAccessor;
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.cache.CacheManager;
|
|
@@ -14,13 +15,16 @@ import org.springframework.cache.interceptor.KeyGenerator;
|
|
|
import org.springframework.context.annotation.Bean;
|
|
|
import org.springframework.context.annotation.Configuration;
|
|
|
import org.springframework.data.redis.cache.RedisCacheManager;
|
|
|
-import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
|
|
|
+import org.springframework.data.redis.connection.RedisStandaloneConfiguration;
|
|
|
+import org.springframework.data.redis.connection.lettuce.LettuceClientConfiguration;
|
|
|
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
|
|
|
+import org.springframework.data.redis.connection.lettuce.LettucePoolingClientConfiguration;
|
|
|
import org.springframework.data.redis.core.RedisTemplate;
|
|
|
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
|
|
|
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
|
|
|
import org.springframework.data.redis.serializer.StringRedisSerializer;
|
|
|
-//import redis.clients.jedis.JedisPoolConfig;
|
|
|
+
|
|
|
+import java.time.Duration;
|
|
|
|
|
|
@Configuration
|
|
|
@EnableCaching
|
|
@@ -45,39 +49,44 @@ public class RedisConfigurer extends CachingConfigurerSupport {
|
|
|
private int port;
|
|
|
@Value("${spring.redis.timeout}")
|
|
|
private int timeout;
|
|
|
- @Value("${spring.redis.jedis.pool.max-active}")
|
|
|
+ @Value("${spring.redis.lettuce.pool.max-active}")
|
|
|
private int maxActive;
|
|
|
- @Value("${spring.redis.jedis.pool.max-idle}")
|
|
|
+ @Value("${spring.redis.lettuce.pool.max-idle}")
|
|
|
private int maxIdle;
|
|
|
- @Value("${spring.redis.jedis.pool.max-wait}")
|
|
|
+ @Value("${spring.redis.lettuce.pool.max-wait}")
|
|
|
private long maxWaitMillis;
|
|
|
- @Value("${spring.redis.jedis.pool.min-idle}")
|
|
|
+ @Value("${spring.redis.lettuce.pool.min-idle}")
|
|
|
private int minIdle;
|
|
|
|
|
|
@Autowired
|
|
|
private LettuceConnectionFactory lettuceConnectionFactory;
|
|
|
|
|
|
@Bean
|
|
|
- public JedisPoolConfig getRedisConfig() {
|
|
|
- JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
|
|
|
- jedisPoolConfig.setMaxTotal(maxActive);
|
|
|
- jedisPoolConfig.setMaxIdle(maxIdle);
|
|
|
- jedisPoolConfig.setMaxWaitMillis(maxWaitMillis);
|
|
|
- jedisPoolConfig.setMinIdle(minIdle);
|
|
|
- return jedisPoolConfig;
|
|
|
+ public GenericObjectPoolConfig getRedisConfig() {
|
|
|
+ GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig();
|
|
|
+ poolConfig.setMaxTotal(maxActive);
|
|
|
+ poolConfig.setMaxIdle(maxIdle);
|
|
|
+ poolConfig.setMaxWaitMillis(maxWaitMillis);
|
|
|
+ poolConfig.setMinIdle(minIdle);
|
|
|
+ return poolConfig;
|
|
|
}
|
|
|
|
|
|
@Bean(destroyMethod = "destroy")
|
|
|
public LettuceConnectionFactory redisConnectionFactory() {
|
|
|
- log.info("Create JedisConnectionFactory successful");
|
|
|
- LettuceConnectionFactory factory = new LettuceConnectionFactory();
|
|
|
- factory.setHostName(host);
|
|
|
- factory.setPort(port);
|
|
|
- factory.setTimeout(timeout);
|
|
|
- factory.setPassword(password);
|
|
|
- factory.setDatabase(Integer.valueOf(databaseCache));
|
|
|
- JedisPoolConfig poolConfig = getRedisConfig();
|
|
|
- factory.setPoolConfig(poolConfig);
|
|
|
+ log.info("Create LettuceConnectionFactory successful");
|
|
|
+ RedisStandaloneConfiguration connection = new RedisStandaloneConfiguration();
|
|
|
+ connection.setHostName(host);
|
|
|
+ connection.setPort(port);
|
|
|
+ connection.setPassword(password);
|
|
|
+ connection.setDatabase(Integer.valueOf(databaseCache));
|
|
|
+ GenericObjectPoolConfig poolConfig = getRedisConfig();
|
|
|
+ LettuceClientConfiguration lettuceClientConfiguration = LettucePoolingClientConfiguration.builder()
|
|
|
+ .commandTimeout(Duration.ofSeconds(timeout))
|
|
|
+ .poolConfig(poolConfig)
|
|
|
+ .shutdownTimeout(Duration.ZERO)
|
|
|
+ .build();
|
|
|
+ LettuceConnectionFactory factory = new LettuceConnectionFactory(connection, lettuceClientConfiguration);
|
|
|
+ factory.afterPropertiesSet();
|
|
|
return factory;
|
|
|
}
|
|
|
|