回顾多级缓存基本概念
在实际开发项目,为了减少数据库的访问压力,我们都会将数据缓存到内存中 比如:Redis(分布式缓存)、EHCHE(JVM内置缓存). 例如在早起中,项目比较小可能不会使用Redis做为缓存,使用JVM内置的缓存框架, 项目比较大的时候开始采用Redis分布式缓存框架,这时候需要设计一级与二级缓存。
缓存机制
jvm 内置缓存(一级缓存):将缓存存到当前jvm中。缺陷:占用当前jvm内存当中 内存溢出问题,集群很难保证各个节点的数据一致性问题。 ehcache,osccahe(底层采用hashmap淘汰策略)
jvm内置缓存 hashmap手写
代码语言:javascript复制public class JvmMapCacheUtils {
/**
* 缓存容器
*/
private static Map<String,String> caches=new ConcurrentHashMap<>();
/**
* 获取
* @param key
* @param t
* @param <T>
* @return
*/
public <T> T getEntity(String key,Class<T> t) {
String s = caches.get(key);
//将s 变为json
return JSONObject.parseObject(s,t);
}
/**
* 存储
* @param key
* @param o
*/
public void putEntity(String key, Object o){
String o1 = JSONObject.toJSONString(o);
caches.put(key,o1);
}
}
redis缓存(二级缓存):共享缓存,
装饰模式基本的概念
不改变原有代码的基础之上,新增附加功能
装饰模式与代理模式的区别
代理模式对我们目标方法实现增强 装饰模式对我们装饰对象实现增强,不能改变原有代码。