Miałem ten sam problem. W tym celu można utworzyć ogólną fasolę i użyć GenricJackson2JsonRedisSerializer. Problem polega na tym, że przy użyciu tego json zostanie zapisany z dodatkowymi danymi, aby deserializacja działała później.
Innym sposobem byłoby użycie Jackson2JsonRedisSerializer, ale do działania potrzebuje instancji Class typu generycznego, do którego nie mogłem dojść.
@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;
}
Użycie w klasie pamięci podręcznej:
@Autowired
@Qualifier("objectRedisTemplate")
private RedisTemplate<String, MyTypeA> redisTemplate;