gpt4 book ai didi

java - 缓存不可序列化的对象

转载 作者:行者123 更新时间:2023-11-30 06:05:22 25 4
gpt4 key购买 nike

我正在尝试实现具有预取功能的缓存。

计划是,如果缓存条目是新的,则它将按原样返回。如果缓存早于设定的年龄,则将返回“旧”缓存,同时生成新线程来刷新条目。如果它比该值更旧,它将更新该条目然后返回它。

这样做的目的是避免用户需要等待缓存刷新而出现缓存未命中的情况。

我已经获得了一个使用 HashMap 作为缓存存储的工作模型,但这看起来有点脏。

因此,我想为此使用 javax.cache.cache-api 包,并选择 org.infinispan.infinispan.jcache 作为实现。问题是我想要保存在缓存中的对象不可序列化,并且我不知道如何使 inifinispan 允许它们。

它们不可序列化的原因是它们存储的函数也可以更新缓存条目。

问题是:你能用 infinispan 存储像这样的不可序列化对象吗?如果可以,如何存储?

或者是否有任何开箱即用的解决方案已经可以满足我的需求?

最佳答案

Infinispan 不要求您的值可序列化

这仅适用于集群缓存,但对于您的用例来说,合理的仅限本地缓存可能更适合。

显然,如果您需要缓存来跨服务器和/或数据中心复制数据,那么 Infinispan 将需要某种方法来跨线路编码对象。如果您也想使用这些功能,您可以为您的类型插入自定义 Externalizer 实现。

即使对于可序列化类型来说,插入自定义Externalizer实现也可能是一个好主意,因为自定义Externalizer框架通常比Java的标准序列化性能更好。

关于java - 缓存不可序列化的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46790956/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com