【发布时间】:2015-04-04 21:17:47
【问题描述】:
RedisCacheManager 只需要一个 RedisTemplate,这意味着它只能序列化单一类型的对象。
既然我有多种类型的对象要序列化,我该怎么做呢?
【问题讨论】:
标签: java spring spring-data spring-data-redis
RedisCacheManager 只需要一个 RedisTemplate,这意味着它只能序列化单一类型的对象。
既然我有多种类型的对象要序列化,我该怎么做呢?
【问题讨论】:
标签: java spring spring-data spring-data-redis
如果您的 CacheManager 是由 Java 代码创建的。 new RedisTemplate() 应该用于支持多种类型。
默认情况下,org.springframework.data.redis.core.RedisTemplate 使用 JdkSerializationRedisSerializer 将 Java 对象转换为字节,然后将它们存储到 Redis 服务器中。
支持Java类实现java.io.Serializable接口。
也可以指定其他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));
【讨论】: