gpt4 book ai didi

java - 在关闭时保留 Guava 缓存

转载 作者:行者123 更新时间:2023-11-30 04:54:15 24 4
gpt4 key购买 nike

我使用以下 Guava 缓存来存储特定时间的消息,等待可能的响应。所以我使用缓存更像是消息超时:

Cache cache = CacheBuilder.newBuilder().expireAfterWrite(7, TimeUnit.DAYS).build();
cache.put(id,message);
...
cache.getIfPresent(id);

最后,我需要在关闭时保留消息及其当前的“超时”信息并在启动时恢复它,并使用每个条目的内部已过期时间。我找不到任何可以让我访问时间信息的方法,所以我可以自己处理。

gauva wiki说:

Your application will not need to store more data than what would fit in RAM. (Guava caches are local to a single run of your application. They do not store data in files, or on outside servers. If this does not fit your needs, consider a tool like Memcached.)

您认为此限制地址也是一个在关闭时持续存在的“超时”映射吗?

最佳答案

我不相信有任何方法可以使用每个条目的过期值重新创建缓存——即使您确实使用了反射。您也许可以通过在单独的线程中使用 DelayedQueue 来模拟它,该线程显式地使应该过期的条目无效,但我认为这是您能做的最好的事情。

也就是说,如果您只是想查看过期信息,我建议您将缓存值包装在一个记住过期时间的类中,这样您就可以通过查找来查找条目的过期时间它的值并调用 getExpirationTime() 方法或您拥有的方法。

至少,新的 Guava 版本不应该破坏这种方法。

关于java - 在关闭时保留 Guava 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9080034/

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