3、读写缓存示例
UserManagedCache<Long, String> cache = UserManagedCacheBuilder.newUserManagedCacheBuilder(Long.class, String.class)
.withLoaderWriter(new SampleLoaderWriter<Long, String>())
.build(true);
// Work with the cache
cache.put(42L, "The Answer!");
assertThat(cache.get(42L), is("The Answer!"));
cache.close();
注:
如果你希望频繁的读和写缓存,则可以使用CacheLoaderWriter。
4、缓存淘汰策略示例
UserManagedCache<Long, String> cache = UserManagedCacheBuilder.newUserManagedCacheBuilder(Long.class, String.class)
.withEvictionAdvisor(new OddKeysEvictionAdvisor<Long, String>())
.withResourcePools(ResourcePoolsBuilder.newResourcePoolsBuilder()
.heap(2L, EntryUnit.ENTRIES))
.build(true);
// Work with the cache
cache.put(42L, "The Answer!");
cache.put(41L, "The wrong Answer!");
cache.put(39L, "The other wrong Answer!");
cache.close();
注:
如果你想使用缓存淘汰算法来淘汰数据,则要使用EvictionAdvisor这个类。
5、按字节设定的缓存示例
UserManagedCache<Long, String> cache = UserManagedCacheBuilder.newUserManagedCacheBuilder(Long.class, String.class)
.withSizeOfMaxObjectSize(500, MemoryUnit.B)
.withSizeOfMaxObjectGraph(1000)
.withResourcePools(ResourcePoolsBuilder.newResourcePoolsBuilder()
.heap(3, MemoryUnit.MB))
.build(true);
cache.put(1L, "Put");
cache.put(1L, "Update");
assertThat(cache.get(1L), is("Update"));
cache.close();
注:
withSizeOfMaxObjectGraph这个主要是调整可以设置多少字节对象。
.heap方法主要是设置每个对象最大可以设置多大。
八、缓存的使用模式
使用缓存时有几种常见的访问模式:
1、预留缓存(Cache-Aside)
应用程序在访问之前必须要先访问缓存,如果缓存中包含了该数据则直接返回,不用再经过,否则应用程序必须要从先中取回数据,存储在缓存中并且将数据返回,当有数据要写入的时候,缓存内容必须要和内容保持一致。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-25691-3.html
一会儿又说是伊拉克对几个谋杀萨达姆的刺客判处了死刑要入侵伊拉克并依此为由绞死了萨达姆