The RedisCacheManager
only takes a single RedisTemplate, which means it can only serialize a single type of object.
Since I have multiple types of object to be serialized, how do i go about it?
The RedisCacheManager
only takes a single RedisTemplate, which means it can only serialize a single type of object.
Since I have multiple types of object to be serialized, how do i go about it?
If your CacheManager
is created by Java code. new RedisTemplate()
should be used to support multiple types.
By default, org.springframework.data.redis.core.RedisTemplate
use JdkSerializationRedisSerializer
to convert Java object to bytes before store them in Redis
server.
It could support Java class implemented java.io.Serializable
interface.
You can also specify other Serializers, for example:
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));