我正在使用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()
视图来修改缓存。