我正在使用Google-guava-cache。定义为:

Cache<String, String> myCache= CacheBuilder.newBuilder().maximumSize(100).build();


当我使用以下命令进行地图操作(例如获取/放置)时:

  myCache.asMap().put("someString", "someString");
  String someValueFromCache = myCache.asMap().get("someString");


我想知道如果我按照以下方式使用它(即不将其用作地图)是否会有任何优化或任何形式的差异:

  myCache.put("someString", "someString");
  String someValueFromCache = myCache.get("someString");

最佳答案

从番石榴缓存文档:https://github.com/google/guava/wiki/CachesExplained#inserted-directly


  值可以直接通过cache.put(key,
  值)。这会覆盖缓存中先前的所有条目
  指定的密钥。也可以使用以下任何一种对缓存进行更改
  Cache.asMap()视图公开的ConcurrentMap方法。请注意,否
  asMap视图上的方法将永远导致条目自动
  加载到缓存中。此外,该视图上的原子操作
  在自动缓存加载范围之外运行,因此Cache.get(K,
  应始终优先于Cache.asMap()。putIfAbsent调用)
  在使用CacheLoader或Callable加载值的缓存中。


不要以为您应该使用asMap()视图来修改缓存。

10-04 20:31