spring cache使用redis作为缓存时的配置问题

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了。


版权声明:本文为u011063502原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。