spring-data-redis提供了一系列的Serializers作为存储到redis时执行序列化操作,而JdkSerializationRedisSerializer作为默认的序列化器,如果正常使用spring的缓存是没什么问题,但是如果你要直接查询redis的时候可能就不是那么友好了,所以这里可以将它转成json存储在redis,这样更好。
重新配置CacheManager,如下:
@Bean
public CacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {
RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig();
//使用jackson作为jsoon序列化库
//RedisSerializer<Object> serializer = new Jackson2JsonRedisSerializer<>(Object.class);
//使用fastjson,经过测试,更喜欢fastjson的序列化
RedisSerializer<Object> serializer = new GenericFastJsonRedisSerializer();
RedisSerializationContext.SerializationPair<?> valueSerializationPair = RedisSerializationContext.SerializationPair.fromSerializer(serializer);
redisCacheConfiguration = redisCacheConfiguration.serializeValuesWith(valueSerializationPair);
return new RedisCacheManager(RedisCacheWriter.nonLockingRedisCacheWriter(redisConnectionFactory),redisCacheConfiguration);
}
这样就可以完成缓存序列化器的配置了,当然,如果你使用的是redisTemplate的话那就要再配置以下redisTemplate了。