Mybatis学习笔记(十三)——mybatis整合ehcache

本博客源码下载:戳我一下

Mybatis学习笔记汇总:戳我一下

EhCache 是一个纯Java的进程内缓存框架,是一种广泛使用的开源Java分布式缓存,具有快速、精干等特点,是Hibernate中默认的CacheProvider

一、分布式缓存

我们系统为了提高系统并发,性能、一般对系统进行分布式部署(集群部署方式)。如果不使用分布缓存,缓存的数据在各各服务单独存储,不方便系统开发。所以要使用分布式缓存对缓存数据进行集中管理,mybatis无法实现分布式缓存,需要和其它分布式缓存框架进行整合。
这里写图片描述

二、整合原理

mybatis提供了一个cache接口,如果要实现自己的缓存逻辑,实现cache接口开发即可。
mybatisehcache整合,mybatisehcache整合包中提供了一个cache接口的实现类。

三、整合ehcache

1、引入缓存的依赖包
这里写图片描述
2、引入缓存配置文件
classpath下添加:ehcache.xml
配置内容如下:

    xsi:noNamespaceSchemaLocation="../config/ehcache.xsd">
    <diskStore path="F:\develop\ehcache" />
    <defaultCache 
        maxElementsInMemory="1000" 
        maxElementsOnDisk="10000000"
        eternal="false" 
        overflowToDisk="false" 
        timeToIdleSeconds="120"
        timeToLiveSeconds="120" 
        diskExpiryThreadIntervalSeconds="120"
        memoryStoreEvictionPolicy="LRU">
    </defaultCache>
</ehcache>

属性说明:
diskStore:指定数据在磁盘中的存储位置。
defaultCache:当借助CacheManager.add("demoCache")创建Cache时,EhCache便会采用<defalutCache/>指定的的管理策略
以下属性是必须的:
maxElementsInMemory : 在内存中缓存的element的最大数目
maxElementsOnDisk :在磁盘上缓存的element的最大数目,若是0表示无穷大
eternal:设定缓存的elements是否永远不过期。如果为true,则缓存的数据始终有效,如果为false那么还要根据timeToIdleSecondstimeToLiveSeconds判断
overflowToDisk :设定当内存缓存溢出的时候是否将过期的element缓存到磁盘上
以下属性是可选的:
timeToIdleSeconds :当缓存在EhCache中的数据前后两次访问的时间超过timeToIdleSeconds的属性取值时,这些数据便会删除,默认值是0,也就是可闲置时间无穷大
timeToLiveSeconds:缓存element的有效生命期,默认是0.,也就是element存活时间无穷大
diskSpoolBufferSizeMB :设置DiskStore(磁盘缓存)的缓存区大小.默认是30MB.每个Cache都应该有自己的一个缓冲区.
diskPersistent : 在JVM重启的时候是否启用磁盘保存EhCache中的数据,默认是false
diskExpiryThreadIntervalSeconds : 磁盘缓存的清理线程运行间隔,默认是120秒。每个120s,相应的线程会进行一次EhCache中数据的清理工作
memoryStoreEvictionPolicy :当内存缓存达到最大,有新的element加入的时候, 移除缓存中element的策略。默认是LRU(最近最少使用),可选的有LFU(最不常使用)和FIFO(先进先出)

3、开启ehcache缓存
修改mapper.xml文件,在cache中指定EhcacheCache

<cache type="org.mybatis.caches.ehcache.EhcacheCache"/>
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页