基于Springboot 2.x配置Redis使用Json序列化自定义的方法
当我们使用SpringBoot配置的Redis缓存的时候,
会发现我们所缓存的Redis的序列化,
是乱码的,
那我们有没有办法重新更改配置使它变成Json的格式进行缓存呢
大家可以参考以下的方法
package com.winds.cache.config;
import com.winds.cache.bean.Employee;
import org.springframework.cache.CacheManager;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.RedisCacheConfiguration;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.connection.RedisConnectionFactory;
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.RedisSerializationContext;
import java.net.UnknownHostException;
import java.time.Duration;
import java.util.List;
@Configuration
public class MyRedisConfig {
@Bean
public RedisCacheManager redisCacheManager(RedisConnectionFactory factory){
RedisCacheConfiguration redisCacheConfiguration=//创建Redis的配置对象
RedisCacheConfiguration.defaultCacheConfig()//defaultCacheConfig()方法是用来整合Redis的
.entryTtl( Duration.ofHours(1) )//设置缓存的有效时间及自动更新策略,大家可以自行设置缓存的时间
.disableCachingNullValues()//禁用空值
.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer( new GenericJackson2JsonRedisSerializer( ) ));
// 使用GenericJackson2JsonRedisSerializer来序列化和反序列化redis的value值
return RedisCacheManager.builder(factory).cacheDefaults( redisCacheConfiguration ).build();
}
}
对于其他的配置属性有什么作用,大家可以参考
RedisCacheConfiguration这个类的实现
需要用到什么属性,可以自行配置属性。