ehcache时如何持久化数据到磁盘,并且在应用

ehcache时如何持久化数据到磁盘,并且在应用,第1张

如何持久化到磁盘

使用cache.flush(),每次写入到cache后调则册圆用cache.flush() ,这样ehcache 会将索引(xxx.index)回写到磁盘。这样就不用担心程序是孙塌否非正常退出导致姿基缓存丢失了。

在系统根目录有个 .FineReport110 文件夹,这个目录下的所有文件都是服务器生成的。

其中有个 ./ehcache_disk_store 文件,经常占凯埋用非常大的空间,导致根目录很容易就满了,那么怎么修改 ./ehcache_disk_store 存放路径呢?

1.2 实现思路

./ehcache_disk_store 里放的是两种类型的缓存文件,分别是:数据库二级缓存、文件服务器的缓存

*** 作时并不是直接修改 ./ehcache_disk_store 的路径,而是分别修改这两种缓存文件的路径。

2. *** 作方法

2.1 修改数据库二级缓存路径

在工程目录 WEB-INF/config 文件夹下创建一个名为 ehcache.db.properties 的文件。

其中跟数据库二级缓存路径相关的配置见下图框出来的部分,可根据场景实际进行修改。

文件配置项如下:

# 数据库ehcache配置

  

# 是否禁用二级缓存,默认不禁用false

disableCache=false

 

# 堆中最大缓存空间,默认256M

maxBytesLocalHeap=1G

 

# 缓存是否常驻,true时timeToIdleSecond和timeToLiveSecond无效,默认false

eternal=false

 

# 使用后的空闲时间,默认120

timeToIdleSecond=120

 

# 创建后的存活时间,默认120

timeToLiveSecond=120

 

# 缓存过期策略,取值LRU,LFU,FIFO,CLOCK,默认LRU

memoryStoreEvictionPolicy=LRU

 

# 线程检查缓存超时的间隔时间,默认120

diskExpiryThreadIntervalSeconds=120

 

# 持久化类型,取值LOCALTEMPSWAP,DISTRIBUTED,LOCALRESTARTABLE,NONE,默认NONE

persistenceType=LOCALTEMPSWAP

# 指定数据库二级缓存路径

diskStore=C:\\Users\\root\\Desktop\\tmp\\db_cache

 

# 持久化同步写入,默认false

persistenceSynchronousWrites=false

  

# 每隔一段辩段时间清理过期缓存,单位秒,默认60

recycleCacheMemoryInterval=60

 

# 每隔一段时间debug输出缓存使用情况(仅在调试时使用,同时日握孙缺志级别需要调至DEBUG),单位秒,为0时不开启,默认0

reportCacheStatusInterval=0

2.2 修改文件服务器缓存路径

在 FineDB 的 fine_conf_entity 表中新增以下两个字段。新增字段时请直接连接到 FineDB 在表里手动修改,不支持使用 FINE_CONF_ENTITY可视化配置插件 配置。

FineDB 数据库类型和连接方法参见文档:FineDB数据库简介

字段 值

ResourceCacheConfig.persistenceStrategy LOCALTEMPSWAP

ResourceCacheManagerConfig.diskStorePath diskStore=C:\\Users\\root\\Desktop\\tmp\\resource_cache


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12262638.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存