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

    1.SqlSession对象是一级缓存 默认是开启状态

    2.SqlSessionFactory对象为二级缓存,可以通过配置开启(下列配置默认使用mybatis的缓存):

    a)在主配置文件中启用二级缓存
    <!-- 开启二级缓存 -->
    <setting name="cacheEnabled" value="true"/>
    b)在要使用二级缓存的mapper文件中,使用cache标签

    <cache 属性.../>:
    可用的收回策略
    LRU – 最近最少使用的:移除最长时间不被使用的对象;
    FIFO – 先进先出:按对象进入缓存的顺序来移除它;
    SOFT – 软引用:移除基于垃圾回收器状态和软引用规则的对象;
    WEAK – 弱引用:更积极地移除基于垃圾收集器状态和弱引用规则的对象;
    默认的是 LRU
    例如:
    <cache
    eviction="FIFO"
    flushInterval="60000"
    size="512"
    readOnly="true"/>
    这个配置创建了一个 FIFO 缓存,并每隔 60 秒刷新,存取512 个结果对象或列表的引用,而且返回的对象为只读,因此在不同线程中的调用者之间修改它们会导致冲突。

    useCache:true使用缓存,false关闭缓存,可以配置在sql语句级别上
    update delte insert更新数据后默认会自动同步缓存,采用flushCache="false"可做到不及时更新缓存数据,这时数据就是历史数据(脏读取)

    3.使用第三方缓存方案(EhCache):
    a)先导入包 mybatis-ehcache-1.0.2.jar、ehcache-1.6.2.jar
    b)在主配置文件中启用二级缓存
    <!-- 开启二级缓存 -->
    <setting name="cacheEnabled" value="true"/>
    (c)让cache标签中type指向第三方缓存 type="org.mybatis.caches.ehcache.EhcacheCache"
    d)配置缓存策略文件 ehcache.xml

    <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="../config/ehcache.xsd"
    updateCheck="false">

    <diskStore path="java.io.tmpdir/ehcache" />

    <!-- DefaultCache setting. -->
    <defaultCache
    maxElementsInMemory="10000"
    eternal="false"
    timeToIdleSeconds="300"
    timeToLiveSeconds="600"
    overflowToDisk="true"
    maxElementsOnDisk="100000"
    memoryStoreEvictionPolicy="LFU"/>

    </ehcache>


  • 相关阅读:
    d3 中exit() remove()正确工作的方式
    理解callback function in javascript
    关于AJAX中函数的执行顺序
    闭包允许内层函数引用父函数中的变量,但是该变量是最终值
    操作系统 庞丽萍 习题九
    关于vector的内存释放问题
    gcc命令中参数c和o混合使用的详解[转载]
    模板函数(template function)出现编译链接错误(link error)之解析
    [转载]config文件的一个很好的实现
    new 等于 malloc加构造函数
  • 原文地址:https://www.cnblogs.com/joyous-day/p/6132747.html
Copyright © 2011-2022 走看看