spring boot整合redis序列化

    xiaoxiao2023-10-06  171

    spring boot整合redis序列化

    引入依赖

    <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> </dependency>

    application.yml配置

    spring: redis: host: localhost port: 6379 password: ****

    序列化配置

    @Configuration public class RedisConfig { @Autowired private RedisConnectionFactory redisConnectionFactory; // 默认用的是用JdkSerializationRedisSerializer进行序列化的 @Bean public RedisTemplate<String, Object> redisTemplate() { RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>(); // 注入数据源 redisTemplate.setConnectionFactory(redisConnectionFactory); // 使用Jackson2JsonRedisSerialize 替换默认序列化 Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); StringRedisSerializer stringRedisSerializer = new StringRedisSerializer(); ObjectMapper objectMapper = new ObjectMapper(); objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); jackson2JsonRedisSerializer.setObjectMapper(objectMapper); // key-value结构序列化数据结构 redisTemplate.setKeySerializer(stringRedisSerializer); redisTemplate.setValueSerializer(jackson2JsonRedisSerializer); // hash数据结构序列化方式,必须这样否则存hash 就是基于jdk序列化的 redisTemplate.setHashKeySerializer(stringRedisSerializer); redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer); // 启用默认序列化方式 redisTemplate.setEnableDefaultSerializer(true); redisTemplate.setDefaultSerializer(jackson2JsonRedisSerializer); /// redisTemplate.afterPropertiesSet(); return redisTemplate; } }
    最新回复(0)