加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

使用Spring Cache缓存Java 8可选

发布时间:2020-12-15 01:36:55 所属栏目:大数据 来源:网络整理
导读:我有一个方法: @Cacheable(key = "#jobId")public Optional 当我尝试检索缓存的项目时,我收到以下异常: 2016-01-18 00:01:10 ERROR [trace=,span=] http-nio-8021-exec-2 [dispatcherServlet]:182 Servlet.service() for servlet [dispatcherServlet] in c

我有一个方法:

@Cacheable(key = "#jobId")
public Optional

当我尝试检索缓存的项目时,我收到以下异常:

2016-01-18 00:01:10 ERROR [trace=,span=] http-nio-8021-exec-2 [dispatcherServlet]:182 – Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.data.redis.serializer.SerializationException: Cannot serialize; nested exception is org.springframework.core.serializer.support.SerializationFailedException: Failed to serialize object using DefaultSerializer; nested exception is java.lang.IllegalArgumentException: DefaultSerializer requires a Serializable payload but received an object of type [java.util.Optional]] with root cause
java.lang.IllegalArgumentException: DefaultSerializer requires a Serializable payload but received an object of type [java.util.Optional]

最佳答案
Spring支持缓存可选.问题是您的Redis序列化程序(可能是JdkSerializationRedisSerializer).它使用基于Java的序列化,要求类可以序列化.您可以通过将RedisCacheManager配置为使用没有此限制的其他序列化程序来解决此问题.例如,您可以使用Kryo(com.esotericsoftware:kryo:3.0.3):

@Bean
RedisCacheManager redisCacheManager (RedisTemplate

请注意,这只是一个例子,我没有测试这个imeplementation.但我在生产中使用Kryo序列化程序以相同的方式使用Spring进行redis缓存.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读