有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java仅在创建时间后过期缓存值

咖啡因有expiresAfterWrite方法,用于查看上次写入时间。我希望它只关注创建时间。因此,当第一个条目出现时,该条目将在一段固定的时间后过期,而不查看该条目上的更新次数。这可能吗


共 (1) 个答案

  1. # 1 楼答案

    是的,但是需要使用更高级的Expiryapi。在下面的示例中,新创建的条目具有固定的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));