缓存

一级缓存

  • 一级缓存也叫本地缓存:sqlsession
    • 与数据库同一次会话期间查询到的数据会放在本地缓存中
    • 以后如果需要获取相同的数据直接从缓存中拿,没必要再去查询数据库

测试:

  1. 开启日志
  2. 测试一个session查询两次相同记录
  3. 查看日志输出

缓存失效的情况

  1. 查询不同的东西
  2. 增删改操作可能会改变原来的数据,所以必定会刷新缓存
  3. 查询不同的Mapper.xml
  4. 手动清理缓存

小结:一级缓存默认是开启的,只在一次sqlsession中有效,也就是拿到连接到关闭连接这个区间

二级缓存

二级缓存也叫全局缓存,一级缓存作用域太低了,所以诞生了二级缓存

基于namespace级别的缓存,一个命名空间对应一个二级缓存

  1. 开启全局缓存(默认为true)

    <!-- 显示的开启全局缓存 -->
    <setting name="cacheEnabled"  value="true"/>
    
  2. 在当前mapper.xml中使用二级缓存(可以自定义参数)

    <cache eviction="FIFO"
               flushInterval="60000"
               size="512"
               readOnly="true"/>
    
  3. 测试

    1. 需要将实体类序列化,否则会报错

小结

  • 只要开启了二级缓存,在同一个mapper下就有效
  • 所有的数据都会先放在一级缓存中
  • 只有会话提交或关闭才会提交到二级缓存中
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值