gpt4 book ai didi

java - 为什么 guava 缓存只能在本地缓存中存储非空值以及如何绕过这个问题

转载 作者:行者123 更新时间:2023-12-01 07:08:34 25 4
gpt4 key购买 nike

我正在使用 google 的 guava utils 将本地缓存添加到我的服务器。

guava 非常适合我的场景,但它只能将“非空”值存储到本地缓存中(com.google.common.cache.Cache 和 com.google.common.cache.LoadingCache 都这样做)。

嗯,这不太好。因为由于时间耗尽或其他原因,我的服务器可能无法从远程数据库获取值。如果我给 Guava 一个默认值,它将存储在本地缓存中,并且将始终存在,除非满足某些驱逐条件。但问题是我无法给 Guava 一个合理的默认值。

有人可以告诉我,为什么 Guava 有这个限制,我怎样才能绕过它? ehcache 可以更适合我的情况吗?

最佳答案

Guava 并不是真正对 null 友好的。我邀请您阅读他们关于 null [1] 的声明。

如果您必须绕过该行为,请使用 Optional<V> [2]。因此,不要使用 LoadingCache<K, V>CacheLoader<K, V> ,使用LoadingCache<K, Optional<V>>CacheLoader<Optional<V>> .

这样您就可以继续使用 Cache 的力量并添加灵 active Optional优惠。

  1. http://code.google.com/p/guava-libraries/wiki/UsingAndAvoidingNullExplained
  2. http://docs.guava-libraries.googlecode.com/git-history/release/javadoc/com/google/common/base/Optional.html

关于java - 为什么 guava 缓存只能在本地缓存中存储非空值以及如何绕过这个问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18463870/

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