3

我正在使用咖啡因缓存来存储从外部系统接收到的数据。

LoadingCache<String, String> clientCache = Caffeine.newBuilder().expireAfterWrite(1, TimeUnit.MINUTES).build(id -> {
  System.out.println("Generating new value for " + id);
  if (id.equalsIgnoreCase("1")) {
    return null;
  }
  return new Date().toString();
});

System.out.println(clientCache.get("1"));
System.out.println(clientCache.get("1"));
System.out.println(clientCache.get("2"));
System.out.println(clientCache.get("3"));

结果,

Generating new value for 1
null
Generating new value for 1
null
Generating new value for 2
Wed May 20 17:11:01 IST 2020
Generating new value for 3
Wed May 20 17:11:01 IST 2020
Wed May 20 17:11:01 IST 2020

咖啡因不会在缓存中保存空值。如何在咖啡因中存储空值?

4

1 回答 1

8

这个问题报告

缓存不允许存储空值。如果您执行计算并返回 null,则这表明数据不存在并且调用者收到 null。

此外,它建议:

Optional是一种很好的负缓存技术。

于 2020-05-20T11:54:10.323 回答