开发者社区> 问答> 正文

如何自定义Caffeine的过期驱逐策略?

如何自定义Caffeine的过期驱逐策略?

展开
收起
冲冲冲c 2024-06-21 20:41:42 57 0
1 条回答
写回答
取消 提交回答
  • 你可以通过实现Expiry接口来自定义Caffeine的过期驱逐策略。该接口允许你为每个缓存项定义基于创建、更新或读取时的自定义过期时间。例如:

    LoadingCache<Key, Graph> graphs = Caffeine.newBuilder() 
    .expireAfter(new Expiry<Key, Graph>() { 
    public long expireAfterCreate(Key key, Graph graph, long currentTime) { 
    // 根据graph的创建日期计算过期时间 
    long seconds = graph.creationDate().plusHours(5) 
    .minus(System.currentTimeMillis(), TimeUnit.MILLISECONDS.toNanos(1)) 
    .toEpochSecond(); 
    return TimeUnit.SECONDS.toNanos(seconds); 
    } 
    // ... 其他方法,如expireAfterUpdate和expireAfterRead可以根据需要实现 
    }) 
    .build(key -> createExpensiveGraph(key));
    
    2024-06-21 21:15:55
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载