Browse Source

Lettuce连接redis

gaodm 6 years atrás
parent
commit
b44c502950

+ 1 - 1
config-server/src/main/resources/shared/user-service-dev.yml

@@ -73,7 +73,7 @@ spring:
     host: 192.168.2.236  #Redis服务器地址
     port: 6379 # Redis服务器连接端口
     password: lantone # Redis服务器连接密码(默认为空)
-    jedis:
+    lettuce:
       pool:
         max-active: 8 # 连接池最大连接数(使用负值表示没有限制)
         max-idle: 5 # 连接池中的最大空闲连接

+ 1 - 1
config-server/src/main/resources/shared/user-service-pro.yml

@@ -73,7 +73,7 @@ spring:
     host: 192.168.2.236  #Redis服务器地址
     port: 6379 # Redis服务器连接端口
     password: lantone # Redis服务器连接密码(默认为空)
-    jedis:
+    lettuce:
       pool:
         max-active: 8 # 连接池最大连接数(使用负值表示没有限制)
         max-idle: 5 # 连接池中的最大空闲连接

+ 1 - 1
config-server/src/main/resources/shared/user-service-test.yml

@@ -73,7 +73,7 @@ spring:
     host: 192.168.2.241  #Redis服务器地址
     port: 6379 # Redis服务器连接端口
     password: lantone # Redis服务器连接密码(默认为空)
-    jedis:
+    lettuce:
       pool:
         max-active: 8 # 连接池最大连接数(使用负值表示没有限制)
         max-idle: 5 # 连接池中的最大空闲连接

+ 31 - 22
user-service/src/main/java/com/diagbot/config/RedisConfigurer.java

@@ -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;
     }