Tôi gặp vấn đề tương tự. Bạn có thể tạo một bean chung cho việc này và sử dụng GenricJackson2JsonRedisSerializer. Vấn đề là bằng cách sử dụng điều này, json sẽ được lưu với một số dữ liệu bổ sung để giải mã hoạt động sau này.
Một cách khác sẽ là sử dụng Jackson2JsonRedisSerializer nhưng nó cần phiên bản Class của loại chung để hoạt động, phù thủy tôi không thể tìm ra cách lấy.
@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;
}
Sử dụng trên lớp bộ nhớ cache:
@Autowired
@Qualifier("objectRedisTemplate")
private RedisTemplate<String, MyTypeA> redisTemplate;