本文整理了Java中com.google.common.cache.Cache
类的一些代码示例,展示了Cache
类的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Cache
类的具体详情如下:
包路径:com.google.common.cache.Cache
类名称:Cache
[英]A semi-persistent mapping from keys to values. Cache entries are manually added using #get(Object,Callable) or #put(Object,Object), and are stored in the cache until either evicted or manually invalidated. The common way to build instances is using CacheBuilder.
Implementations of this interface are expected to be thread-safe, and can be safely accessed by multiple concurrent threads.
[中]从键到值的半持久映射。使用#get(Object,Callable)或#put(Object,Object)手动添加缓存项,并将其存储在缓存中,直到逐出或手动使其无效。构建实例的常用方法是使用CacheBuilder。
该接口的实现应该是线程安全的,并且可以由多个并发线程安全地访问。
代码示例来源:origin: prestodb/presto
private <K, V> V loadValue(Cache<K, V> cache, K key, Supplier<V> valueSupplier)
{
if (replay) {
return Optional.ofNullable(cache.getIfPresent(key))
.orElseThrow(() -> new PrestoException(NOT_FOUND, "Missing entry found for key: " + key));
}
V value = valueSupplier.get();
cache.put(key, value);
return value;
}
代码示例来源:origin: apache/incubator-druid
@Override
public V get(K key, Callable<? extends V> valueLoader) throws ExecutionException
{
return cache.get(key, valueLoader);
}
代码示例来源:origin: Graylog2/graylog2-server
@Override
public V remove(K key) throws CacheException {
final V old = cache.getIfPresent(key);
cache.invalidate(key);
return old;
}
代码示例来源:origin: apache/incubator-druid
@Override
public void invalidateAll()
{
cache.invalidateAll();
cache.cleanUp();
}
代码示例来源:origin: thinkaurelius/titan
@Override
public synchronized void close() {
volatileVertices.clear();
cache.invalidateAll();
cache.cleanUp();
}
代码示例来源:origin: thinkaurelius/titan
@Override
public InternalVertex get(final long id, final Retriever<Long, InternalVertex> retriever) {
final Long vertexId = id;
InternalVertex vertex = cache.getIfPresent(vertexId);
if (vertex == null) {
InternalVertex newVertex = volatileVertices.get(vertexId);
if (newVertex == null) {
newVertex = retriever.get(vertexId);
}
assert newVertex!=null;
try {
vertex = cache.get(vertexId, new NewVertexCallable(newVertex));
} catch (Exception e) { throw new AssertionError("Should not happen: "+e.getMessage()); }
assert vertex!=null;
}
return vertex;
}
代码示例来源:origin: google/guava
public void testAsMapValues_iteratorRemove() {
Cache<Integer, Integer> cache =
CacheBuilder.newBuilder()
.expireAfterWrite(1000, TimeUnit.MILLISECONDS)
.ticker(fakeTicker)
.build();
cache.put(10, 20);
Iterator<Integer> iterator = cache.asMap().values().iterator();
iterator.next();
iterator.remove();
assertEquals(0, cache.size());
}
}
代码示例来源:origin: google/guava
public void testInvalidate() {
Cache<Integer, Integer> cache = CacheBuilder.newBuilder().build();
cache.put(654, 2675);
cache.put(2456, 56);
cache.put(2, 15);
cache.invalidate(654);
assertFalse(cache.asMap().containsKey(654));
assertTrue(cache.asMap().containsKey(2456));
assertTrue(cache.asMap().containsKey(2));
}
代码示例来源:origin: google/guava
public void testAsMapKeySet() {
Cache<Integer, Integer> cache =
CacheBuilder.newBuilder()
.expireAfterWrite(1000, TimeUnit.MILLISECONDS)
.ticker(fakeTicker)
.build();
cache.put(10, 20);
fakeTicker.advance(500, TimeUnit.MILLISECONDS);
cache.put(20, 22);
cache.put(5, 10);
fakeTicker.advance(501, TimeUnit.MILLISECONDS);
Set<Integer> foundKeys = new HashSet<>(cache.asMap().keySet());
assertEquals(ImmutableSet.of(20, 5), foundKeys);
}
代码示例来源:origin: google/guava
public void testInvalidateAll() {
Cache<Integer, Integer> cache = CacheBuilder.newBuilder().build();
cache.put(654, 2675);
cache.put(2456, 56);
cache.put(2, 15);
cache.invalidateAll();
assertFalse(cache.asMap().containsKey(654));
assertFalse(cache.asMap().containsKey(2456));
assertFalse(cache.asMap().containsKey(2));
cache.put(654, 2675);
cache.put(2456, 56);
cache.put(2, 15);
cache.put(1, 3);
cache.invalidateAll(ImmutableSet.of(1, 2));
assertFalse(cache.asMap().containsKey(1));
assertFalse(cache.asMap().containsKey(2));
assertTrue(cache.asMap().containsKey(654));
assertTrue(cache.asMap().containsKey(2456));
}
代码示例来源:origin: google/guava
public void testAsMapValues_contains() {
Cache<Integer, Integer> cache =
CacheBuilder.newBuilder()
.expireAfterWrite(1000, TimeUnit.MILLISECONDS)
.ticker(fakeTicker)
.build();
cache.put(10, 20);
fakeTicker.advance(500, TimeUnit.MILLISECONDS);
cache.put(20, 22);
cache.put(5, 10);
fakeTicker.advance(501, TimeUnit.MILLISECONDS);
assertTrue(cache.asMap().values().contains(22));
assertTrue(cache.asMap().values().contains(10));
assertFalse(cache.asMap().values().contains(20));
}
代码示例来源:origin: google/guava
static void checkEmpty(Cache<?, ?> cache) {
assertEquals(0, cache.size());
assertFalse(cache.asMap().containsKey(null));
assertFalse(cache.asMap().containsKey(6));
assertFalse(cache.asMap().containsValue(null));
assertFalse(cache.asMap().containsValue(6));
checkEmpty(cache.asMap());
}
代码示例来源:origin: Graylog2/graylog2-server
@Override
public void purge(LookupCacheKey purgeKey) {
if (purgeKey.isPrefixOnly()) {
// If the key to purge only contains a prefix, invalidate all keys with that prefix
cache.invalidateAll(
cache.asMap().keySet().stream()
.filter(lookupCacheKey -> purgeKey.prefix().equals(lookupCacheKey.prefix()))
.collect(Collectors.toSet())
);
} else {
cache.invalidate(purgeKey);
}
}
代码示例来源:origin: google/guava
public void testAsMap_containsKey() {
Cache<Integer, Integer> cache =
CacheBuilder.newBuilder()
.expireAfterWrite(20000, TimeUnit.MILLISECONDS)
.ticker(fakeTicker)
.build();
cache.put(654, 2675);
fakeTicker.advance(10000, TimeUnit.MILLISECONDS);
cache.put(2456, 56);
cache.put(2, 15);
fakeTicker.advance(10001, TimeUnit.MILLISECONDS);
assertTrue(cache.asMap().containsKey(2));
assertTrue(cache.asMap().containsKey(2456));
assertFalse(cache.asMap().containsKey(654));
}
代码示例来源:origin: google/guava
public void testComputeIfPresent() {
cache.put(key, "1");
// simultaneous update for same key, expect count successful updates
doParallelCacheOp(
count,
n -> {
cache.asMap().computeIfPresent(key, (k, v) -> v + delimiter + n);
});
assertEquals(1, cache.size());
assertThat(cache.getIfPresent(key).split(delimiter)).hasLength(count + 1);
}
代码示例来源:origin: google/guava
public void testLoader() throws ExecutionException {
final Cache<Integer, Integer> cache = CacheBuilder.newBuilder().build();
Callable<Integer> loader =
new Callable<Integer>() {
private int i = 0;
@Override
public Integer call() throws Exception {
return ++i;
}
};
cache.put(0, 10);
assertEquals(Integer.valueOf(10), cache.get(0, loader));
assertEquals(Integer.valueOf(1), cache.get(20, loader));
assertEquals(Integer.valueOf(2), cache.get(34, loader));
cache.invalidate(0);
assertEquals(Integer.valueOf(3), cache.get(0, loader));
cache.put(0, 10);
cache.invalidateAll();
assertEquals(Integer.valueOf(4), cache.get(0, loader));
}
代码示例来源:origin: google/guava
public void testAsMapEntrySet() {
Cache<Integer, Integer> cache =
CacheBuilder.newBuilder()
.expireAfterWrite(1000, TimeUnit.MILLISECONDS)
.ticker(fakeTicker)
.build();
cache.put(10, 20);
fakeTicker.advance(500, TimeUnit.MILLISECONDS);
cache.put(20, 22);
cache.put(5, 10);
fakeTicker.advance(501, TimeUnit.MILLISECONDS);
int sum = 0;
for (Entry<Integer, Integer> current : cache.asMap().entrySet()) {
sum += current.getKey() + current.getValue();
}
assertEquals(57, sum);
}
代码示例来源:origin: google/guava
public void testUpdates() {
cache.put(key, "1");
// simultaneous update for same key, some null, some non-null
doParallelCacheOp(
count,
n -> {
cache.asMap().compute(key, (k, v) -> n % 2 == 0 ? v + delimiter + n : null);
});
assertTrue(1 >= cache.size());
}
代码示例来源:origin: google/guava
public void testValuesIsNotASet() {
assertFalse(CacheBuilder.newBuilder().build().asMap().values() instanceof Set);
}
代码示例来源:origin: apache/incubator-druid
@Override
public V getIfPresent(K key)
{
return cache.getIfPresent(key);
}
内容来源于网络,如有侵权,请联系作者删除!