分布式缓存框架: 将各个服务器上的缓存数据进行集中管理。
===========================================================
第一步:在sqlMapConfig.xml中打开二级缓存。
<settings>
<setting name="cacheEnabled" value="true"/>
</settings>
第二步:pojo类实现序列化接口(否则缓存无法写入磁盘,会报错)

序列化: 将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时存储区或持久性存储区,之后便可以通过从存储区中读取或反序列化对象的状态信息,来重新创建该对象。
第三步: 导入ehcache相关jar包

点击这里免费下载图片中的版本。
第四步: 在XxxMapper.xml中开启二级缓存
<cache type="org.mybatis.caches.ehcache.LoggingEhcache"></cache>
上面的可以输出日志,在控制台可以看到配置信息。
<cache type="org.mybatis.caches.ehcache.EhcacheCache"></cache>

可以通过输出判断自己配置的ehcache.xml文件是否生效!
第五步: 配置ehcache.xml文件(文件名必须一致,和sqlMapConfig.xml放在同一路径,若读取不到自己配置的文件则会加载默认的ehcache.xml文件)
ps:若要查看溢出的缓存是否存入磁盘,不仅要
diskStore path=“D:\ehcache”,还要overflowToDisk=“true”
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="../config/ehcache.xsd">
<diskStore path="D:\ehcache" />
<defaultCache maxElementsInMemory="10000"
maxElementsOnDisk="10000000"
eternal="false"
overflowToDisk="true"
timeToIdleSeconds="120"
timeToLiveSeconds="120"
diskExpiryThreadIntervalSeconds="120"
memoryStoreEvictionPolicy="LRU">
</defaultCache>
</ehcache>
默认配置文件的位置:核心包下面。


ehcache.xml文件中的属性介绍:
maxElementsInMemory:缓存最大个数。
maxElementsOnDisk:存入磁盘缓存最大个数。
eternal:对象是否永久有效,一但设置了,timeout将不起作用。
overflowToDisk:当内存中对象数量达到maxElementsInMemory时,Ehcache是否将会对象写到磁盘中,默认false。
timeToIdleSeconds:设置对象在失效前的允许闲置时间(单位:秒)。仅当eternal=false对象不是永久有效时使用,可选属性。
timeToLiveSeconds:设置对象在失效前允许存活时间(单位:秒)。最大时间介于创建时间和失效时间之间。仅当eternal=false对象不是永久有效时使用。
iskExpiryThreadIntervalSeconds:磁盘失效线程运行时间间隔,默认是120秒。
memoryStoreEvictionPolicy:当达到maxElementsInMemory限制时,Ehcache将会根据指定的策略去清理内存。默认策略是LRU(最近最少使用)。你可以设置为FIFO(先进先出)或是LFU(较少使用)
本文详细介绍如何在MyBatis中启用并配置分布式缓存Ehcache,包括开启二级缓存、实现序列化接口、导入相关jar包、配置XML文件等关键步骤。

1897

被折叠的 条评论
为什么被折叠?



