From 37d76adf129d41f65342874886c43db450ecb0ef Mon Sep 17 00:00:00 2001
From: kaiyu <404897439@qq.com>
Date: Fri, 12 Mar 2021 17:16:55 +0800
Subject: [PATCH] Merge branch 'dev' of http://blit.7drlb.com:8888/r/moral into dev

---
 screen-api/src/main/java/com/moral/api/config/redis/RedisConfig.java |   71 ++++++++++++++++++++++++++++++++++-
 1 files changed, 69 insertions(+), 2 deletions(-)

diff --git a/screen-api/src/main/java/com/moral/api/config/redis/RedisConfig.java b/screen-api/src/main/java/com/moral/api/config/redis/RedisConfig.java
index b63690d..db90547 100644
--- a/screen-api/src/main/java/com/moral/api/config/redis/RedisConfig.java
+++ b/screen-api/src/main/java/com/moral/api/config/redis/RedisConfig.java
@@ -1,12 +1,21 @@
 package com.moral.api.config.redis;
 
+import java.time.Duration;
+
 import com.fasterxml.jackson.annotation.JsonAutoDetect;
 import com.fasterxml.jackson.annotation.PropertyAccessor;
 import com.fasterxml.jackson.databind.ObjectMapper;
+
+import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.data.redis.connection.RedisConnectionFactory;
+import org.springframework.data.redis.connection.RedisPassword;
+import org.springframework.data.redis.connection.RedisStandaloneConfiguration;
+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.core.StringRedisTemplate;
 import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
@@ -16,9 +25,9 @@
 @Configuration
 public class RedisConfig {
 
-    @Bean(name="redisTemplate")
+    @Bean(name = "redisTemplate")
     @ConditionalOnMissingBean(StringRedisTemplate.class)  //������������������  ���������������������RedisTemplate ������������    ������������������
-    public RedisTemplate<String,Object> stringRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
+    public RedisTemplate<String, Object> stringRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
         RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>();
         redisTemplate.setConnectionFactory(redisConnectionFactory);
         Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
@@ -39,4 +48,62 @@
         redisTemplate.afterPropertiesSet();
         return redisTemplate;
     }
+
+    @Bean(name = "tokenRedisTemplate")
+    public RedisTemplate<String, Object> getTokenRedisTemplate(
+            @Value("${spring.tokenRedis.host}") String hostName,
+            @Value("${spring.tokenRedis.password}") String password,
+            @Value("${spring.tokenRedis.port}") int port,
+            @Value("${spring.tokenRedis.database}") int database,
+            @Value("${spring.tokenRedis.pool.max-active}") int maxActive,
+            @Value("${spring.tokenRedis.pool.max-idle}") int maxIdle,
+            @Value("${spring.tokenRedis.pool.min-idle}") int minIdle,
+            @Value("${spring.tokenRedis.pool.max-wait}") long maxWait,
+            @Value("${spring.tokenRedis.timeout}") long timeout
+    ) {
+        RedisStandaloneConfiguration configuration = new RedisStandaloneConfiguration();
+        configuration.setHostName(hostName);
+        configuration.setPort(port);
+        configuration.setDatabase(database);
+        RedisPassword redisPassword = RedisPassword.of(password);
+        configuration.setPassword(redisPassword);
+
+        GenericObjectPoolConfig genericObjectPoolConfig = new GenericObjectPoolConfig();
+        genericObjectPoolConfig.setMaxTotal(maxActive);
+        genericObjectPoolConfig.setMinIdle(minIdle);
+        genericObjectPoolConfig.setMaxIdle(maxIdle);
+        genericObjectPoolConfig.setMaxWaitMillis(maxWait);
+
+        LettucePoolingClientConfiguration.LettucePoolingClientConfigurationBuilder builder = LettucePoolingClientConfiguration.builder();
+        builder.poolConfig(genericObjectPoolConfig);
+        builder.commandTimeout(Duration.ofSeconds(timeout));
+        LettuceConnectionFactory connectionFactory = new LettuceConnectionFactory(configuration, builder.build());
+        connectionFactory.afterPropertiesSet();
+
+        return createRedisTemplate(connectionFactory);
+    }
+
+    public RedisTemplate createRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
+        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
+        redisTemplate.setConnectionFactory(redisConnectionFactory);
+
+        Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);
+        ObjectMapper objectMapper = new ObjectMapper();
+        objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
+        objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
+        jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
+
+        StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
+        // key������String������������������
+        redisTemplate.setKeySerializer(stringRedisSerializer);
+        // hash���key���������String������������������
+        redisTemplate.setHashKeySerializer(stringRedisSerializer);
+        // valuevalue������jackson���������������
+        redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
+        // hash���value������jackson���������������
+        redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
+        redisTemplate.afterPropertiesSet();
+        redisTemplate.afterPropertiesSet();
+        return redisTemplate;
+    }
 }

--
Gitblit v1.8.0