咖啡因-仅在创建后如何使缓存的值过期

时间:2018-08-10 05:57:41

标签: java caching caffeine

咖啡因具有expiresAfterWrite方法,该方法在上次写入时间上查找。我只想看看创建时间。因此,当第一个条目出现时,条目将在固定的时间后过期,而无需查看该条目的更新数量。这可能吗?

1 个答案:

答案 0 :(得分:2)

是的,但是需要使用更高级的Expiry API。在下面的示例中,新创建的条目的生命周期固定为5分钟。这是通过在更新或读取时返回currentDuration来完成的。

LoadingCache<Key, Graph> graphs = Caffeine.newBuilder()
    .expireAfter(new Expiry<Key, Graph>() {
      public long expireAfterCreate(Key key, Graph graph, long currentTime) {
        return TimeUnit.MINUTES.toNanos(5);
      }
      public long expireAfterUpdate(Key key, Graph graph, 
          long currentTime, long currentDuration) {
        return currentDuration;
      }
      public long expireAfterRead(Key key, Graph graph,
          long currentTime, long currentDuration) {
        return currentDuration;
      }
    })
    .build(key -> createExpensiveGraph(key));