MyBatis缓存结构
2015-07-16 18:28
260 查看
Mybatis Cache结构图:
CacheKey(statementId, sql, sqlParams,other)。
上图展示了Mybatis Cache的结构:
1)每个Mapper对应一块缓存存储
2)Redis缓存存储key为mapper名称,value为哈希表 (主要操作缓存方法为hset,hdel,del,访问api由jedis提供)
3,Mybatis缓存与insert/update/delete/query等crud方法的交互
1)执行query成功时,缓存会增加一条记录,比如UserMapper的queryUser结果,会存入一条field=CacheKey, value= queryUser结果集的记录到key为User的缓存块。
2)执行insert/update/delete方法时,会清理key为User的缓存块内容
3)当一个Mapper发生写操作时,实际的db数据可能发生变化,此时清理缓存是合理的,另一方面如果使用缓存,一张db表的操作都应在一个mapper当中,并且最好一一对应
对于Redis而言,实现这个逻辑比较易于实现,因为它本身支持value为HashMap的缓存结构。
CacheKey(statementId, sql, sqlParams,other)。
上图展示了Mybatis Cache的结构:
1)每个Mapper对应一块缓存存储
2)Redis缓存存储key为mapper名称,value为哈希表 (主要操作缓存方法为hset,hdel,del,访问api由jedis提供)
3,Mybatis缓存与insert/update/delete/query等crud方法的交互
1)执行query成功时,缓存会增加一条记录,比如UserMapper的queryUser结果,会存入一条field=CacheKey, value= queryUser结果集的记录到key为User的缓存块。
2)执行insert/update/delete方法时,会清理key为User的缓存块内容
3)当一个Mapper发生写操作时,实际的db数据可能发生变化,此时清理缓存是合理的,另一方面如果使用缓存,一张db表的操作都应在一个mapper当中,并且最好一一对应
对于Redis而言,实现这个逻辑比较易于实现,因为它本身支持value为HashMap的缓存结构。
相关文章推荐
- java基础第七天
- 第一天写博客
- html dom渲染成图片
- ps命令实用方法.ps -l ps -L详解
- Maven Missing Artifact 问题(ezmorph, json-lib)
- iOS_关联详解
- UVA 12897 Decoding Baby Boos 暴力
- java基础 类与对象 构造器 static
- Chrome的隐身模式
- CentOS7 安装Bind
- java基础第六天
- jackson json 序列化与反序列化时json中字段名称问题
- Linux中的ipmitool工具的使用
- Linux中的ipmitool工具的使用
- Mybatis中namespace的作用
- 高斯模板生成的过程
- 数据运营-如何判断是否要进行数据驱动创新?
- 框架基础学习之--搭建mySSMTest框架总结
- android:showAsAction用法
- springmvc 接收对象 滴灌摘要