【问题标题】:How to Make guava cache value permanent如何使番石榴缓存值永久化
【发布时间】:2018-02-16 00:27:10
【问题描述】:

是否可以使用 Google Guava 的缓存将我的缓存值永久保存在缓存中?

以下是我构建缓存的方法:

cache = CacheBuilder.newBuilder()               
                .expireAfterWrite(60, TimeUnit.MINUTES)
                .maximumSize(100)
                .build(....);

我希望我的缓存永久保留该值(目前为 60 分钟)。有什么办法吗?

【问题讨论】:

    标签: java caching guava


    【解决方案1】:

    只需从构建器中删除expireAfterWrite(这是可选功能):

    cache = CacheBuilder.newBuilder()
                .maximumSize(100)
                .build(....);
    

    只有在达到 maximumSize 时才会驱逐条目。

    Guava 的缓存是 well documented,但您可能也应该阅读 Wiki page

    附:如果“永久”是指“重启后会在那里”,那么 Guava Cache 不适合您,因为它是内存缓存。

    【讨论】:

      【解决方案2】:

      只需更改 builder 中的值:

      cache = CacheBuilder.newBuilder()               
                  .expireAfterWrite(Long.MAX_VALUE, TimeUnit.DAYS)
                  .maximumSize(Long.MAX_VALUE)
                  .build(....);
      

      【讨论】:

      • 谢谢 Vakh....
      • 另一个肯定更好:) 我只是把它作为“破解”时间限制的一般方式。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多