1. 2级缓存
jvm内置的缓存: ehcash
共享缓存 : redis
双重保证,当redis挂了 还有EHCash
1.早期项目如果是 单点应用,不需要redis实现二级缓存。
2.如果是一个集群的情况下,建议采用redis实现缓存。
3.早期时候,定义好一级缓存,以后新增二级缓存的时候 不会改变一级缓存代码。
4.装饰模式 不改变原有对象功能,来实现增强。
2. mybatis的2级缓存
3.什么是装饰者模式
在不改变原有对象的基础上附加功能,相比生成子类更灵活。
4.装饰者模式应用场景
动态的给一个对象添加或者撤销功能。
5.装饰者模式优缺点
优点:可以不改变原有对象的情况下动态扩展功能,可以使扩展的多个功能按想要的顺序执行,以实现不同效果。
缺点:更多的类,使程序复杂
6.装饰者模式定义
(1)抽象组件
:定义一个抽象接口,来规范准备附加功能的类
(2)具体组件
:将要被附加功能的类,实现抽象构件角色接口
(3)抽象装饰者
:持有对具体构件角色的引用并定义与抽象构件角色一致的接口
(4)具体装饰
:实现抽象装饰者角色,负责对具体构件添加额外功能。
protected ComponentGateway componentGateway;
setComponentGateway(ComponentGateway componentGateway)
7. 原理图
先查二级缓存, 如没有 在查一级缓存,若没有,在查数据库。
8.实例
1.接口抽象组建
2.刚开始 只有 一级缓存
3. 新增了 二级测试
先查询 二级,有值的话,直接翻出去
否则 查询一级缓存, 把值赋给 二级缓存,再把二级缓存翻出去
4. 测试
9. 装饰模式 和 代理模式 区别
代理模式: 在方法之前 和 之后 实现处理, 方法实现增强 隐藏真实方法的真实性。 保证安全
装饰模式: 不改变原有的功能,实现增加 不断新增很多装饰