From e442e98a198d67994e6dce01fd88e163291fd40c Mon Sep 17 00:00:00 2001 From: jinpengyong <jpy123456> Date: Fri, 12 Mar 2021 09:52:39 +0800 Subject: [PATCH] api登陆更新 --- 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