本文整理了Java中org.ehcache.Cache.putIfAbsent()
方法的一些代码示例,展示了Cache.putIfAbsent()
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Cache.putIfAbsent()
方法的具体详情如下:
包路径:org.ehcache.Cache
类名称:Cache
方法名:putIfAbsent
[英]Maps the specified key to the specified value in this cache, unless a non-expired mapping already exists.
This is equivalent to
if (!cache.containsKey(key))
cache.put(key, value);
return null;
else
return cache.get(key);
except that the action is performed atomically.
The value can be retrieved by calling the get method with a key that is equal to the original key.
Neither the key nor the value can be null.
[中]将指定的键映射到此缓存中的指定值,除非已存在未过期的映射。
这相当于
if (!cache.containsKey(key))
cache.put(key, value);
return null;
else
return cache.get(key);
除了操作是以原子方式执行之外。
可以通过使用与原始键相等的键调用get方法来检索该值。
键和值都不能为null。
代码示例来源:origin: ehcache/ehcache3
@Override
protected void insert(Cache<Number, CharSequence> testCache, Map<Number, CharSequence> entries) {
for (Map.Entry<Number, CharSequence> entry : entries.entrySet()) {
testCache.putIfAbsent(entry.getKey(), entry.getValue());
}
}
}
代码示例来源:origin: ben-manes/caffeine
@Override
public void record(long key) {
Object value = cache.putIfAbsent(key, key);
if (value == null) {
size++;
policyStats.recordMiss();
if (size > maximumSize) {
policyStats.recordEviction();
size--;
}
} else {
policyStats.recordHit();
}
}
代码示例来源:origin: ehcache/ehcache3
@Test
public void testPutIfAbsentWithWriterException_should_call_writer() throws Exception {
doThrow(new Exception("Mock Exception: cannot write 1")).when(cacheLoaderWriter).write(eq(1), eq("one"));
try {
testCache.putIfAbsent(1, "one");
fail("expected CacheWritingException");
} catch (CacheWritingException ex) {
// expected
}
testCache.put(2, "two");
testCache.putIfAbsent(2, "two#2");
}
代码示例来源:origin: ehcache/ehcache3
private void putIfAbsent(Cache<Long, String> cache, String value, boolean addToCacheRecords) {
cache.putIfAbsent(KEY, value);
if (addToCacheRecords) {
cacheRecords.add(new Record(KEY, cache.get(KEY)));
}
}
代码示例来源:origin: ehcache/ehcache3
@Test
public void ttiExpiryPut() {
Cache<Integer, String> cache = createCache(ExpiryPolicyBuilder.timeToIdleExpiration(Duration.ofMillis(100)));
cache.put(1, "a");
assertThat(cache.putIfAbsent(1, "b")).isEqualTo("a");
timeSource.setTimeMillis(100);
assertThat(cache.putIfAbsent(1, "c")).isNull();
}
代码示例来源:origin: ehcache/ehcache3
@Test
public void testSimplePutIfAbsentWithLoaderAndWriter_absent() throws Exception {
assertThat(testCache.containsKey(1), is(false));
assertThat(testCache.putIfAbsent(1, "one"), is(nullValue()));
assertThat(testCache.get(1), Matchers.<CharSequence>equalTo("one"));
verify(cacheLoaderWriter, times(1)).load(eq(1));
verify(cacheLoaderWriter, times(1)).write(eq(1), eq("one"));
}
代码示例来源:origin: ehcache/ehcache3
@Test
public void testSimplePutIfAbsentWithLoaderAndWriter_existsInSor() throws Exception {
when(cacheLoaderWriter.load(eq(1))).thenAnswer((Answer) invocation -> "un");
assertThat(testCache.containsKey(1), is(false));
assertThat(testCache.putIfAbsent(1, "one"), Matchers.<CharSequence>equalTo("un"));
assertThat(testCache.get(1), Matchers.<CharSequence>equalTo("un"));
verify(cacheLoaderWriter, times(1)).load(eq(1));
verifyNoMoreInteractions(cacheLoaderWriter);
}
代码示例来源:origin: ehcache/ehcache3
@Test
@SuppressWarnings("unchecked")
public void testSimplePutIfAbsentWithLoaderAndWriter_existsInStore() throws Exception {
testCache.put(1, "un");
reset(cacheLoaderWriter);
assertThat(testCache.putIfAbsent(1, "one"), Matchers.<CharSequence>equalTo("un"));
assertThat(testCache.get(1), Matchers.<CharSequence>equalTo("un"));
verifyZeroInteractions(cacheLoaderWriter);
}
代码示例来源:origin: ehcache/ehcache3
@Test
public void putIfAbsent() {
expect(cache.putIfAbsent(1, "a")).isNull();
changesOf(0, 1, 1, 0);
expect(cache.putIfAbsent(1, "b")).isEqualTo("a");
changesOf(1, 0, 0, 0);
}
代码示例来源:origin: ehcache/ehcache3
@Test
public void testSimplePutIfAbsent() throws Exception {
Cache<Number, CharSequence> testCache = cacheManager.createCache("testCache", newCacheConfigurationBuilder(Number.class, CharSequence.class, heap(10)));
CharSequence one = testCache.putIfAbsent(1, "one");
assertThat(one, is(nullValue()));
CharSequence one_2 = testCache.putIfAbsent(1, "one#2");
assertThat(one_2, Matchers.<CharSequence>equalTo("one"));
assertThat(testCache.get(1), Matchers.<CharSequence>equalTo("one"));
}
代码示例来源:origin: ehcache/ehcache3
@Test
public void putIfAbsent() {
expect(cache.putIfAbsent(1, "a")).isNull();
changesOf(0, 1, 1, 0);
expect(cache.putIfAbsent(1, "b")).isEqualTo("a");
changesOf(1, 0, 0, 0);
}
代码示例来源:origin: ehcache/ehcache3
@Test
public void testSimplePutWithExpiry_putIfAbsent() throws Exception {
insert(testCache, getEntries());
assertThat(cacheSize(testCache), is(2));
manualTimeSource.setTimeMillis(1001);
assertThat(testCache.putIfAbsent(1, "one#2"), is(nullValue()));
assertThat(testCache.get(1), Matchers.<CharSequence>equalTo("one#2"));
assertThat(testCache.putIfAbsent(2, "two#2"), is(nullValue()));
assertThat(testCache.get(2), Matchers.<CharSequence>equalTo("two#2"));
}
代码示例来源:origin: ehcache/ehcache3
@Test
public void putIfAbsent_absent() {
createCacheManager();
cache = createCache();
assertThat(cache.putIfAbsent(1, "a")).isNull();
assertThat(cache.get(1)).isEqualTo("a");
changesOf(1, 1, 1, 0);
}
代码示例来源:origin: ehcache/ehcache3
@Test
public void putIfAbsent_present() {
createCacheManager();
cache = createCache();
cache.put(1, "a");
assertThat(cache.putIfAbsent(1, "b")).isEqualTo("a");
changesOf(1, 0, 1, 0);
}
代码示例来源:origin: ehcache/ehcache3
@Test
public void putIfAbsentLoaderWriter_absentAndLoaded() throws Exception {
createCacheManager();
CacheLoaderWriter<Integer, String> loader = mockLoader();
when(loader.load(1)).thenReturn("a");
CacheConfigurationBuilder<Integer, String> builder = baseConfig()
.withLoaderWriter(loader);
cache = createCache(builder);
assertThat(cache.putIfAbsent(1, "b")).isEqualTo("a");
assertThat(cache.get(1)).isEqualTo("a");
changesOf(2, 0, 0, 0);
}
代码示例来源:origin: ehcache/ehcache3
@Test
public void noExpiryPut() {
Cache<Integer, String> cache = createCache(ExpiryPolicyBuilder.noExpiration());
cache.put(1, "a");
timeSource.setTimeMillis(Long.MAX_VALUE);
assertThat(cache.putIfAbsent(1, "b")).isEqualTo("a");
}
代码示例来源:origin: ehcache/ehcache3
@Test
public void putIfAbsentLoaderWriterNotAtomic_absent() throws Exception {
createNotAtomicCacheManager();
CacheLoaderWriter<Integer, String> loader = mockLoader();
CacheConfigurationBuilder<Integer, String> builder = baseConfig()
.withLoaderWriter(loader);
cache = createCache(builder);
assertThat(cache.putIfAbsent(1, "a")).isNull();
verify(loader).write(1, "a");
assertThat(cache.get(1)).isEqualTo("a");
changesOf(1, 1, 1, 0);
}
代码示例来源:origin: ehcache/ehcache3
@Test
public void putIfAbsentLoaderWriter_present() throws Exception {
createCacheManager();
CacheLoaderWriter<Integer, String> loader = mockLoader();
CacheConfigurationBuilder<Integer, String> builder = baseConfig()
.withLoaderWriter(loader);
cache = createCache(builder);
cache.put(1, "a");
assertThat(cache.putIfAbsent(1, "b")).isEqualTo("a");
verify(loader).write(1, "a");
changesOf(1, 0, 1, 0);
}
代码示例来源:origin: ehcache/ehcache3
@Test
public void putIfAbsent_presentButExpired() {
createCacheManager();
CacheConfigurationBuilder<Integer, String> builder = baseConfig()
.withExpiry(ExpiryPolicyBuilder.timeToLiveExpiration(Duration.ofMillis(10)));
cache = createCache(builder);
cache.put(1, "a");
timeSource.advanceTime(15);
assertThat(cache.putIfAbsent(1, "b")).isNull();
assertThat(cache.get(1)).isEqualTo("b");
changesOf(1, 1, 2, 0);
}
代码示例来源:origin: ehcache/ehcache3
@Test
public void testPutIfAbsentExpirationPropagatedToHigherTiers() throws CachePersistenceException {
CacheManagerBuilder<PersistentCacheManager> clusteredCacheManagerBuilder = cacheManagerBuilder(oneSecondExpiration());
try(PersistentCacheManager cacheManager = clusteredCacheManagerBuilder.build(true)) {
Cache<Long, String> cache = cacheManager.getCache(CLUSTERED_CACHE, Long.class, String.class);
cache.put(1L, "value"); // store on the cluster
cache.putIfAbsent(1L, "newvalue"); // push it up on heap tier
timeSource.advanceTime(1500); // go after expiration
assertThat(cache.get(1L)).isEqualTo(null); // the value should have expired
}
}
}
内容来源于网络,如有侵权,请联系作者删除!