如何在Spring Redis Cache中序列化多个类型?

pde*_*eva 5 java spring spring-data spring-data-redis

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

由于我有多种类型的对象要序列化,我该怎么做呢?

Bec*_*ang 0

如果你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));
Run Code Online (Sandbox Code Playgroud)