From 239927b057f65a040594f7a4cb08c8881b303797 Mon Sep 17 00:00:00 2001
From: cjl <276999030@qq.com>
Date: Fri, 18 Aug 2023 14:52:16 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/cjl-230812' into cjl-230812
---
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