java实现本地缓存
2016-12-12 10:44
363 查看
这里本地缓存的含义是 多个线程公用的一个静态的Map对象
作用是减少db或cache的查询次数。
使用场景为静态或者非敏感数据。
也可以使用google的guava cache等
缓存类
import lombok.AllArgsConstructor; import lombok.Getter; import lombok.Setter; import java.util.HashMap; import java.util.Map; public class LocalCache { //缓存Map private static Map<String,CacheContent> map = new HashMap<>(); private static LocalCache localCache = new LocalCache(); private LocalCache(){ } public String getLocalCache(String key) { CacheContent cc = map.get(key); if(null == cc) { return null; } long currentTime = System.currentTimeMillis(); if(cc.getCacheMillis() > 0 && currentTime - cc.getCreateTime() > cc.getCacheMillis()) { //超过缓存过期时间,返回null map.remove(key); return null; } else { return cc.getElement(); } } public void setLocalCache(String key,int cacheMillis,String value) { long currentTime = System.currentTimeMillis(); CacheContent cc = new CacheContent(cacheMillis,value,currentTime); map.put(key,cc); } public static LocalCache getInStance(){ return localCache; } @Getter @Setter @AllArgsConstructor class CacheContent{ // 缓存生效时间 private int cacheMillis; // 缓存对象 private String element; // 缓存创建时间 private long createTime ; } }
调用代码
//先查询本地缓存 String key ="testkey"; LocalCache localCache = LocalCache.getInStance(); String value = localCache.getLocalCache(key); if(StringUtils.isBlank(value)) { //从db或cache获取数据 value = RedisClient.get(key); //设置本地缓存,生效时间为10秒 localCache.setLocalCache(key ,10000,value); }
相关文章推荐
- Java 本地缓存的实现(转)
- Java8简单的本地缓存实现
- Java8简单的本地缓存实现
- Java8简单的本地缓存实现
- java对象本地缓存机制的实现
- 如何使用Java实现简单的本地缓存?
- java本地缓存实现
- java java local cache本地缓存的两种实现,一个基于list轮询一个基于timer定时
- Java 实现本地缓存工具
- Java LocalCache 本地缓存的实现实例
- Java中LocalCache本地缓存实现代码
- Java学习之ConcurrentHashMap实现一个本地缓存
- Java本地缓存的实现代码
- JAVA编程——简单本地缓存的实现
- Java8简单的本地缓存实现
- Java学习之ConcurrentHashMap实现一个本地缓存
- java java local cache本地缓存的两种实现,一个基于list轮询一个基于timer定时
- java java local cache本地缓存的两种实现,一个基于list轮询一个基于timer定时
- java cookie 实现用户账号信息本地保存
- JAVA缓存的实现