炫酷的移动端网站,图片制作视频的app,网站开发课程内部培训,怎么注册网店缓存的作用
提升系统性能#xff0c;暂时在内存中保存业务系统的数据处理结果#xff0c;并且等待下次访问使用
本地缓存和分布式缓存
缓存分为本地缓存与分布式缓存。本地缓存为了保证线程安全问题#xff0c;一般使用ConcurrentMap的方式保存在内存之中#xff0c;而常…缓存的作用
提升系统性能暂时在内存中保存业务系统的数据处理结果并且等待下次访问使用
本地缓存和分布式缓存
缓存分为本地缓存与分布式缓存。本地缓存为了保证线程安全问题一般使用ConcurrentMap的方式保存在内存之中而常见的分布式缓存则有RedisMongoDB等。 本地缓存适用于数据量较小或变动较少的数据因为变动多需要考虑到不同实例的缓存一致性问题而数据量大则需要考虑缓存回收策略及GC相关的问题
Guava Cache
Guava Cache是一个全内存的本地缓存实现它提供了线程安全的实现机制。整体上来说Guava cache 是本地缓存的不二之选简单易用性能好。 Guava是Google提供的一个核心Java类库其中包含集合【collections】、缓存【caching】、原生类型支持【primitives support】、并发库【concurrency libraries】、通用注解【common annotations】、字符串处理【string processing】、I/O 等等。
创建方法
通过CacheBuilder类构建一个缓存对象CacheBuilder类采用builder设计模式它的每个方法都返回CacheBuilder本身直到build方法被调用。
常用配置 initialCapacity(100)初始容量 maximumSize(1000)最大记录数超出容量删除数据 maximumWeight(long)指定最大总重超出权重删除数据 weigher(Weigher)指定一个权重函数 expireAfterWrite 写缓存后多久过期 expireAfterAccess 读写缓存后多久过期 Cache.invalidate(key)清除单个key Cache.invalidateAll(keys)批量清除key Cache.invalidateAll()清除所有缓存项
weakKeys()使用弱引用存储键。当键没有其它强或软引用时缓存项可以被垃圾回收 weakValues()使用弱引用存储值。当值没有其它强或软引用时缓存项可以被垃圾回收 softValues()使用软引用存储值。软引用只有在响应内存需要时才按照全局最近最少使用的顺序回收。
LoadingCache使用自定义ClassLoader加载数据置入内存中。从LoadingCache中获取数据时若数据存在则直接返回若数据不存在则根据ClassLoader的load方法加载数据至内存然后返回该数据
import com.google.common.cache.*;import javax.annotation.CheckForNull;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;public class GuavaTest {public static void main(String[] args) throws ExecutionException {GuavaTest test new GuavaTest();test.cache.put(1, 2);System.out.println(test.cache.getIfPresent(2));test.cache1.put(1, 1);System.out.println(test.cache1.get(1));}CacheInteger, Integer cache CacheBuilder.newBuilder().maximumSize(3).expireAfterWrite(5, TimeUnit.MINUTES).build();LoadingCacheString, String cache1 CacheBuilder.newBuilder().build(new CacheLoaderString, String() {Overridepublic String load(String str) throws Exception {return a;}});
}