缓存的作用与应用场景
缓存,在项目中的应用非常之广泛。诸如这样的场景,某些对象计算或者获取的代码比较昂贵,并且在程序里你不止一次要用到这些对象,那么,你就应该使用缓存。
缓存跟java的CoucurrentMap很类似,但青出于蓝胜于蓝。CoucurrentMap的特点是,当你往它里面放元素的时候,你需要自己手动去把它移除。而缓存的最大特点是,你无须手动去移除缓存里的元素,而是通过某些移除策略,如果超时或者内存空间紧张等等。
本文主要使用Google的guava工具库来构建我们的缓存系统。
首先说一下我们的缓存系统需要达到的两个目标。
第一,在获取某个对象时,如果对象已在缓存里则直接返回;否则,自动从数据库读取并加入到缓存,并返回给用户接口。
第二,当对象长时间没有被查询命中的话,自己将对象从缓存里移除。
缓存的实现
好,开始我们的编码......
1.定义缓存容器(CacheContainer.java)
/**
* 缓存容器
*
*/
public abstract class CacheContainer<K, V> {
private LoadingCache<K, V>