二级缓存源码解析
2021-05-25 14:43:10 13 举报
mybatis 二级缓存
作者其他创作
大纲/内容
暂存区3
源码阅读网 coderead.cn
数据库防问层
key:value
3.过期清理
缓存的配置策略
是否存在缓存
<cache-ref> 或 @CacheNamespaceRef
会话二
事物缓存管理器
LRUCache
5.命中率统计
服务层
LRU 最近最少使用
2、Sql语句、参数相同
运行时参数想关
flushCache
ScheduledCache
二级缓存
防溢出
commit【提交】
myBatis 缓存体系
一级缓存
二级缓存定义
第三方集成
TransactionalCache【暂存区】
FIFO 先进先出
TransactionalCache
灵活性高
TransactionalCacheManager【缓存管理器】
扩展性强
优点
6.序列化
否
二级缓存空间
缓存体系
二级缓存执行流程
myBatis 二级缓存体系
CachingExecutor
内存
数据库
会话级缓存
@CacheNamespace
会话1
内存存储
cacheEnabled
clearLocalCache【清理暂存区】
LoggingCache
线程同步
4、RowBounds 相同
query【查询】
JDBC
防穿透
过期清理
n. ......
缓存区
1.存储
commit【提交暂存区】
结构清楚,简单
SynchronizedCache
二级缓存也称作是应用级缓存,与一级缓存不同的是它的作用范围是整个应用,而且可以跨线程使用。所以二级缓存有更高的命中率,适合缓存一些修改较少的数据。
myBatis
硬盘
为什么要提交之后才能命中缓存?
二级缓存扩展性需求
查询
BlockingCache
暂存区4
控制层
暂存区1
引用缓存空间
1、会话提交后
3、相同的statementID
Cache
提交
会话
记录命中率
临时清空
清除默认:修改true、查询false
update【修改】
缓存管理器作用域为会话
SqlSession
2.溢出淘汰
拦截
4.线程安全
修改
myBatis 二级缓存命中
setObject【填充暂存区】
是
缓存
statement 缓存开关 默认true
PerpetualCache
二级缓存配置表
全局缓存开关 默认true
暂存区2
<cache/> 或 @CacheNamespace
useCache
声明缓存空间
会话2
查询数据库
getObject【查询缓存】
应用级缓存
0 条评论
下一页