springboot配置redis序列化

springboot configuration redis serialization

Why is the error "Could not autowire. No beans of 'RedisConnectionFactory' type found" reported here?

序列化无效

我用了新的方式注入对象并没有解决问题:

@Configuration
public class RedisConfig {
@Resource
private RedisConnectionFactory redisConnectionFactory;
@Bean
public RedisTemplate<Object,Object> redisTemplate(){
    RedisTemplate<Object,Object> redisTemplate=new RedisTemplate<>();
    Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
    redisTemplate.setConnectionFactory(redisConnectionFactory);

    redisTemplate.setKeySerializer(new StringRedisSerializer());
    redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);

    
    redisTemplate.setHashKeySerializer(new StringRedisSerializer());
    redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);

    
    redisTemplate.setStringSerializer(new StringRedisSerializer());
    return redisTemplate;
}

}

我在实现redis服务器的时候通过写这样的代码解决了这个问题

@Configuration
public class RedisConfiguration {

  @Bean
  @ConditionalOnMissingBean(name = "redisTemplate")
  @Primary
  public <T> RedisTemplate<String, T> redisTemplate(RedisConnectionFactory connectionFactory) {
    final RedisTemplate<String, T> template = new RedisTemplate<>();
    template.setConnectionFactory(connectionFactory);

    ObjectMapper om = new ObjectMapper();
    om.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
    om.registerModule(new JavaTimeModule());

    template.setKeySerializer(new StringRedisSerializer());
    template.setHashValueSerializer(new GenericJackson2JsonRedisSerializer(om));
    template.setValueSerializer(new GenericJackson2JsonRedisSerializer(om));
    return template;
  }
}

这段代码可能与您的要求略有不同,但我认为如果您仔细观察,可以根据您的需要进行修改。