zoukankan      html  css  js  c++  java
  • mybati缓存机制之二级缓存配置

    二级缓存配置

    在MyBatis的配置文件中开启二级缓存。

    1. <setting name="cacheEnabled" value="true"/>
    2. 在MyBatis的映射XML中配置cache或者 cache-ref 。

                  cache标签用于声明这个namespace使用二级缓存,并且可以自定义配置。

           <cache/>
    •  type:cache使用的类型,默认是PerpetualCache,这在一级缓存中提到过。

    • eviction: 定义回收的策略,常见的有FIFO,LRU。

    • flushInterval: 配置一定时间自动刷新缓存,单位是毫秒。

    • size: 最多缓存对象的个数。

    • readOnly: 是否只读,若配置可读写,则需要对应的实体类能够序列化。

    • blocking: 若缓存中找不到对应的key,是否会一直blocking,直到有对应的数据进入缓存。

        cache-ref代表引用别的命名空间的Cache配置,两个命名空间的操作使用的是同一个Cache。

      <cache-ref namespace="mapper.StudentMapper"/>


    相对于一级缓存来说,二级缓存实现了SqlSession之间缓存数据的共享,同时粒度更加的细,能够到namespace级别,通过Cache接口实现类不同的组合,对Cache的可控性也更强。

    在多表查询时,极大可能会出现脏数据,有设计上的缺陷,安全使用二级缓存的条件比较苛刻。

    在分布式环境下,由于默认的MyBatis Cache实现都是基于本地的,分布式环境下必然会出现读取到脏数据,需要使用集中式缓存将MyBatis的Cache接口实现,有一定的开发成本,直接使用Redis,Memcached等分布式缓存可能成本更低,安全性也更高。
     
  • 相关阅读:
    c++控制台 设置字体颜色
    c 无回显读取字符/不按回车即获取字符
    C 汉字处理
    codeblocks 汉字乱码
    [转]C/C++获取当前系统时间
    锐捷认证的一些问题&解决方法
    JAVA之BigInteger(转)【转】【很好用啊】
    常用小函数——不要重复造轮子
    字符串的朴素模式和KMP模式匹配
    直接插入排序
  • 原文地址:https://www.cnblogs.com/levcon/p/9033252.html
Copyright © 2011-2022 走看看