RedisCacheManager仅采用单个RedisTemplate,这意味着它只能序列化单一类型的对象。

由于我有多种类型的要序列化的对象,我该如何处理?

最佳答案

如果您的CacheManager是由Java代码创建的。 new RedisTemplate()应该用于支持多种类型。
默认情况下,org.springframework.data.redis.core.RedisTemplate使用JdkSerializationRedisSerializer将Java对象转换为字节,然后再将它们存储在Redis服务器中。
它可以支持Java类实现的java.io.Serializable接口(interface)。

您还可以指定其他Serializers,例如:

XStreamMarshaller xstream=new XStreamMarshaller();//org.springframework.data.redis.serializer.XStreamMarshaller
xstream.afterPropertiesSet();
//set serializer for all Redis type - convert object to XML string
redisTemplate.setDefaultSerializer(new OxmSerializer(xstream, xstream));
//set serializer for Redis key type
//redisTemplate.setKeySerializer(new StringRedisSerializer());
//set serializer for Redis value type
//redisTemplate.setValueSerializer(new OxmSerializer(xstream, xstream));

关于java - 如何在Spring Redis Cache中序列化多种类型?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29451495/

10-12 21:20