Redis
 sql >> Database >  >> NoSQL >> Redis

Asciugare un RedisTemplate generico nella primavera 4

Ho avuto lo stesso problema. È possibile creare un bean generico per questo e utilizzare GenricJackson2JsonRedisSerializer. Il problema è che usando questo il json verrà salvato con alcuni dati extra affinché la deserializzazione funzioni in seguito.

Un altro modo sarebbe usare Jackson2JsonRedisSerializer ma ha bisogno dell'istanza Class del tipo generico per funzionare, ma non sono riuscito a capire come ottenerlo.

@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;
}

Utilizzo su classe cache:

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