sql >> Base de Datos >  >> NoSQL >> Redis

Secando un RedisTemplate genérico en Spring 4

Tuve el mismo problema. Puede crear un bean genérico para esto y usar GenricJackson2JsonRedisSerializer. El problema es que al usar esto, el json se guardará con algunos datos adicionales para que la deserialización funcione más adelante.

Otra forma sería usar Jackson2JsonRedisSerializer, pero necesita la instancia de clase del tipo genérico para funcionar, pero no pude averiguar cómo obtenerlo.

@Bean("objectRedisTemplate")
public <T> RedisTemplate<String, T> objectRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
    RedisTemplate<String, T> redisTemplate = new RedisTemplate<>();

    redisTemplate.setConnectionFactory(redisConnectionFactory);

    RedisSerializer<String> serializer = new StringRedisSerializer();
    redisTemplate.setKeySerializer(serializer);
    redisTemplate.setHashKeySerializer(serializer);

    redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());

    return redisTemplate;
}

Uso en la clase de caché:

@Autowired
@Qualifier("objectRedisTemplate")
private RedisTemplate<String, MyTypeA> redisTemplate;