我需要使用 Ehcache 3 缓存空值。对于 Ehcache 2,我找到了如下示例:
// cache an explicit null value:
cache.put(new Element("key", null));
Element element = cache.get("key");
if (element == null) {
// nothing in the cache for "key" (or expired) ...
} else {
// there is a valid element in the cache, however getObjectValue() may be null:
Object value = element.getObjectValue();
if (value == null) {
// a null value is in the cache ...
} else {
// a non-null value is in the cache ...
是否有 Ehcache 3 的示例,因为 net.sf.ehcache.Element 似乎不再存在?
我也看到了这个评论:https ://github.com/ehcache/ehcache3/issues/1607
事实上,你不能缓存一个空值,这也是 JCache 规范的行为。如果您在应用程序中需要它,请创建一个哨兵值或包装您的应用程序中的值。
当然,如果我的返回对象为空,我可以构建一些逻辑,如果我只存储空元素的键,则将其放入另一个 Set。当然,为了阅读,我需要检查我的 ehcache 和我的“特殊”集。