Redis
 sql >> Base de données >  >> NoSQL >> Redis

Sécher un RedisTemplate générique au printemps 4

J'ai eu le même problème. Vous pouvez créer un bean générique pour cela et utiliser GenricJackson2JsonRedisSerializer. Le problème est qu'en utilisant ceci, le json sera enregistré avec des données supplémentaires pour que la désérialisation fonctionne plus tard.

Une autre façon serait d'utiliser le Jackson2JsonRedisSerializer mais il a besoin de l'instance de classe du type générique pour fonctionner, ce que je ne pouvais pas comprendre comment l'obtenir.

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

Utilisation sur la classe de cache :

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