zoukankan      html  css  js  c++  java
  • Mybatis二级缓存

    什么是二级缓存?

      一级缓存是在两次发送同一个SQL请求,第一次执行完,就把数据存储在sqlsession中,第二次是从缓存中取出的数据,也就是说前后就只执行了一次SQL语句。

    但每次SqlSession一关闭,一级缓存中的数据就消失。所以用到了二级缓存。

    所以从这个角度讲:能跨sqlSession的缓存为二级缓存!

    1、一个会话,查询一条数据,这个数据就会被放在当前会话的一级缓存中。
    2、如果会话关闭,一级缓存中的数据会被保存到二级缓存中;新的会话查询信息,就可以参照二级缓存中。

    步骤:

      第一步:

      在mybatis配置文件中,

      开启全局二级缓存配置:<setting name="cacheEnabled" value="true"/>

      第二步:

      在xxxMapper.xml中配置二级缓存

      <cache eviction="FIFO" flushInterval="60000" readOnly="false" size="1024" type=""></cache>

        flushInterval设置的是刷新的时间,单位是毫秒。

        

        readOnly:是否只读,true/false
          true:只读缓存;mybatis认为所有从缓存中获取数据的操作都是只读操作,不会修改数据。
            mybatis为了加快获取速度,直接就会将数据在缓存中的引用交给用户。不安全,速度快。
          false:非只读:mybatis觉得获取的数据可能会被修改。
            mybatis会利用序列化&反序列化的技术克隆一份。安全,速度慢。
        type:指定自定义缓存的全类名

        size:缓存的对象的数目,默认是1024个。

        eviction:达到缓存的极限,新进缓存对象的替换方式。

      第三步:

        将缓存的对象实现序列化接口。

      第四步:

        在第一次操作之后记得关闭sqlsession。只有在sqlsession关闭之后,才会把数据方法二级缓存空间。

  • 相关阅读:
    runc create container 流程分析
    cri-o pod 创建源码分析
    hyperstart 容器创建流程分析
    MIT jos 6.828 Fall 2014 训练记录(lab 4)
    python 邮件发送 脚本
    jvm: 理解gc日志
    jvm:垃圾收集器
    GC 垃圾收集
    jvm结构
    Java transient关键字使用小记
  • 原文地址:https://www.cnblogs.com/xuesheng/p/7485079.html
Copyright © 2011-2022 走看看