From 0bf868d3cdf9226e178c076d3b588ed5207409a0 Mon Sep 17 00:00:00 2001 From: kongzy <kongzy> Date: 星期五, 24 十一月 2023 17:51:40 +0800 Subject: [PATCH] merge --- assess-common/src/main/java/com/gkhy/assess/common/config/BaseRedisConfig.java | 72 ++++++++++++++++++++++++++++++++++++ 1 files changed, 72 insertions(+), 0 deletions(-) diff --git a/assess-common/src/main/java/com/gkhy/assess/common/config/BaseRedisConfig.java b/assess-common/src/main/java/com/gkhy/assess/common/config/BaseRedisConfig.java new file mode 100644 index 0000000..2eb4f50 --- /dev/null +++ b/assess-common/src/main/java/com/gkhy/assess/common/config/BaseRedisConfig.java @@ -0,0 +1,72 @@ +package com.gkhy.assess.common.config; + +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.PropertyAccessor; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator; +import com.gkhy.assess.common.service.RedisService; +import com.gkhy.assess.common.service.impl.RedisServiceImpl; +import org.springframework.context.annotation.Bean; +import org.springframework.data.redis.cache.RedisCacheConfiguration; +import org.springframework.data.redis.cache.RedisCacheManager; +import org.springframework.data.redis.cache.RedisCacheWriter; +import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; +import org.springframework.data.redis.serializer.RedisSerializationContext; +import org.springframework.data.redis.serializer.RedisSerializer; +import org.springframework.data.redis.serializer.StringRedisSerializer; + +import java.time.Duration; + +/** + * Redis基础配置 + */ +public class BaseRedisConfig { + + /** + * 配置redisTemplate + * @param redisConnectionFactory + * @return + */ + @Bean + public RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory redisConnectionFactory){ + RedisSerializer<Object> serializer=redisSerializer(); + RedisTemplate<String,Object> redisTemplate=new RedisTemplate<>(); + redisTemplate.setConnectionFactory(redisConnectionFactory); + redisTemplate.setKeySerializer(new StringRedisSerializer()); + redisTemplate.setValueSerializer(serializer); + redisTemplate.setHashKeySerializer(new StringRedisSerializer()); + redisTemplate.setHashValueSerializer(serializer); + redisTemplate.afterPropertiesSet(); + return redisTemplate; + } + + @Bean + public RedisSerializer<Object> redisSerializer(){ + //创建JSON序列化器 + Jackson2JsonRedisSerializer<Object> serializer=new Jackson2JsonRedisSerializer<>(Object.class); + ObjectMapper objectMapper=new ObjectMapper(); + objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); + //必须设置,否则无法将JSON转化为对象,会转化成Map类型 + objectMapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance,ObjectMapper.DefaultTyping.NON_FINAL); + serializer.setObjectMapper(objectMapper); + return serializer; + } + + + @Bean + public RedisCacheManager redisCacheManager(RedisConnectionFactory redisConnectionFactory){ + RedisCacheWriter redisCacheWriter=RedisCacheWriter.nonLockingRedisCacheWriter(redisConnectionFactory); + //设置Redis缓存有效期为1天 + RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig() + .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(redisSerializer())).entryTtl(Duration.ofDays(1)); + return new RedisCacheManager(redisCacheWriter, redisCacheConfiguration); + } + + + @Bean + public RedisService redisService(){ + return new RedisServiceImpl(); + } +} -- Gitblit v1.9.2