回顾多级缓存基本概念

在实际开发项目,为了减少数据库的访问压力,我们都会将数据缓存到内存中
比如:Redis(分布式缓存)、EHCHE(JVM内置缓存).
例如在早起中,项目比较小可能不会使用Redis做为缓存,使用JVM内置的缓存框架,
项目比较大的时候开始采用Redis分布式缓存框架,这时候需要设计一级与二级缓存。

缓存机制

jvm 内置缓存(一级缓存):将缓存存到当前jvm中。缺陷:占用当前jvm内存当中 内存溢出问题,集群很难保证各个节点的数据一致性问题。 ehcache,osccahe(底层采用hashmap淘汰策略)

jvm内置缓存 hashmap手写
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缓存(二级缓存):共享缓存,

装饰模式基本的概念

不改变原有代码的基础之上,新增附加功能
1654655475144

装饰模式与代理模式的区别

代理模式对我们目标方法实现增强
装饰模式对我们装饰对象实现增强,不能改变原有代码。