Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 可以自定义Spring缓存抽象使用的序列化吗?_Java_Spring_Redis_Jackson_Spring Cache - Fatal编程技术网

Java 可以自定义Spring缓存抽象使用的序列化吗?

Java 可以自定义Spring缓存抽象使用的序列化吗?,java,spring,redis,jackson,spring-cache,Java,Spring,Redis,Jackson,Spring Cache,我有一个Java web服务,它使用Redis进行缓存。最初,我创建了一个CacheService,直接访问Redisson客户端以处理缓存。我最近对缓存处理进行了重构,以使用Spring缓存抽象,这使代码更加清晰,并鼓励模块化设计。不幸的是,Spring使用Jackson对缓存对象进行序列化/反序列化,由于JSON中存储了类型信息,导致缓存值比以前大得多。这导致从缓存读取的响应时间增加到了不可接受的程度。有没有办法定制Spring序列化和反序列化缓存内容的方式?我想用我自己的逻辑替换它,但在文

我有一个Java web服务,它使用Redis进行缓存。最初,我创建了一个CacheService,直接访问Redisson客户端以处理缓存。我最近对缓存处理进行了重构,以使用Spring缓存抽象,这使代码更加清晰,并鼓励模块化设计。不幸的是,Spring使用Jackson对缓存对象进行序列化/反序列化,由于JSON中存储了类型信息,导致缓存值比以前大得多。这导致从缓存读取的响应时间增加到了不可接受的程度。有没有办法定制Spring序列化和反序列化缓存内容的方式?我想用我自己的逻辑替换它,但在文档中看不到任何东西。如果可能的话,我宁愿不必推出自己的AspectJ缓存实现。

需要一个
RedisOperations
,您可以在那里配置序列化的工作方式。您可以调整键和值的序列化,尽管我怀疑键应该使用
StringRedisSerializer

来执行
RedisOperations
,您可以在那里配置序列化的工作方式。您可以调整键和值的序列化,尽管我怀疑键应该使用
StringRedisSerializer

也提供了。它支持许多流行的编解码器:Jackson-JSON、Avro、Smile、CBOR、MsgPack、Kryo、FST、LZ4、Snappy和JDK序列化

以下是一个例子:

@Bean
CacheManager cacheManager(RedissonClient redissonClient) {
    Codec codec = new JsonJacksonCodec();

    Map<String, CacheConfig> config = new HashMap<String, CacheConfig>();
    config.put("testMap", new CacheConfig(24*60*1000, 12*60*1000));
    return new RedissonSpringCacheManager(redissonClient, config, codec);
}
@Bean
CacheManager CacheManager(RedissonClient RedissonClient){
Codec Codec=新的JsonJacksonCodec();
Map config=newhashmap();
config.put(“testMap”,新的CacheConfig(24*60*1000,12*60*1000));
返回新的RedissonSpringCacheManager(redissonClient、配置、编解码器);
}
还提供。它支持许多流行的编解码器:Jackson-JSON、Avro、Smile、CBOR、MsgPack、Kryo、FST、LZ4、Snappy和JDK序列化

以下是一个例子:

@Bean
CacheManager cacheManager(RedissonClient redissonClient) {
    Codec codec = new JsonJacksonCodec();

    Map<String, CacheConfig> config = new HashMap<String, CacheConfig>();
    config.put("testMap", new CacheConfig(24*60*1000, 12*60*1000));
    return new RedissonSpringCacheManager(redissonClient, config, codec);
}
@Bean
CacheManager CacheManager(RedissonClient RedissonClient){
Codec Codec=新的JsonJacksonCodec();
Map config=newhashmap();
config.put(“testMap”,新的CacheConfig(24*60*1000,12*60*1000));
返回新的RedissonSpringCacheManager(redissonClient、配置、编解码器);
}