zoukankan      html  css  js  c++  java
  • Mybatis笔记(六):一级缓存与二级缓存

    时间:2021/10/20

    一.一级缓存

    有关一级缓存的内容是比较简单的,需要记住的是:一级缓存默认是开启的,只在一次SqlSession中有效,当该SqlSession被close时,该缓存也会被清空,同时,增删改操作也会刷新缓存。

    二.二级缓存

    1.开启二级缓存的步骤

    1)在mybatis-config.xml配置文件的settings中全局地开启或关闭配置文件中的所有映射器已经配置的任何缓存

    虽然该变量的默认值为true,但是最好在配置文件中显示开启。

    2)在映射器配置文件中开始缓存(如在UserMapper.xml中)

    默认情况下,只启用了本地的会话缓存,它仅仅对一个会话中的数据进行缓存。 要启用全局的二级缓存,只需要在你的 SQL 映射文件中添加一行:

    1 <cache/>

    还可以通过一下属性进行更详细的配置:

    1 <cache
    2 eviction="FIFO"
    3 flushInterval="60000"
    4 size="512"
    5 readOnly="true"/>

    上面表示使用先进先出的顺序移除二级缓存中的对象,每隔60000秒刷新一次缓存,缓存中最多可以存储512个对象,并且只读。

    可用的清除策略有:

    LRU – 最近最少使用:移除最长时间不被使用的对象。
    FIFO – 先进先出:按对象进入缓存的顺序来移除它们。
    SOFT – 软引用:基于垃圾回收器状态和软引用规则移除对象。
    WEAK – 弱引用:更积极地基于垃圾收集器状态和弱引用规则移除对象。

    2.二级缓存的相关知识

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

    2)如果当前会话关闭了,这个会话对应的一级缓存就没了;开启二级缓存后,会话关闭了,一级缓存中的数据被保存到二级缓存中。

    3)新的会话查询信息,就可以从二级缓存中获取内容。

    4)不同的mapper查处的数据会放在自己的缓存块中(也就是二级缓存对应的是mapper)。

    5)查询时先看二级缓存中有没有,再看一级缓存中有没有,如果都没有才会去查数据库。

    努力,向上,自律
  • 相关阅读:
    线程的简单介绍
    队列Joinablequeue的使用,以及生产者消费者模型的认识
    使用子线程来完成链接循环和通信循环
    使用socketserver实现简单的下载和上传
    类的绑定方法学习
    类的组合-多态-封装等特性的简单学习
    爬虫之亚马逊爬取
    JavaScript 面试中常见算法问题详解
    JavaScript 的 this 指向问题深度解析
    深入理解 JavaScript 中的函数
  • 原文地址:https://www.cnblogs.com/machi12/p/15430948.html
Copyright © 2011-2022 走看看