Mybatis二级缓存
二级缓存应有的需求
- 二级缓存也称作是应用级缓存,与一级缓存不同的是它的作用范围是整个应用,而且可以跨线程使用。所以二级缓存有更高的命中率,适合缓存一些修改较少的数据
- 存储方式:内存、硬盘、第三方集成…
- 溢出淘汰策略:FIFO先进先出、LRU最近最少使用…
- 过期清理、线程安全、命中率统计、序列化…
- Mybatis使用装饰器+责任链的形式来实现缓存的所有需求
二级缓存的命中
运行时参数相关
- 会话提交后
- sql语句、参数相同
- 相同的statementId
- RowBounds相同
为什么要提交之后才能命中缓存?
为了避免脏读数据的产生,只有在提交过后才能保证多会话使用的二级缓存数据的准确性。