ehcache简单配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <?xml version= "1.0" encoding= "UTF-8" ?> <ehcache dynamicConfig= "true" > <!-- 磁盘缓存位置 --> <diskStore path= "/files/cache" /> <!-- 反向代理缓存 --> <!--maxBytesLocalDisk缓存所能使用的磁盘的最大字节数的,其单位可以是K、M或G。默认是0,表示不限制。只有在单机环境下才可以使用本地磁盘--> <!--timeToLiveSeconds:对象存活时间,指对象从创建到失效所需要的时间。只对eternal为 false 的有效。默认值为0,表示一直可以访问。(单位:秒)--> <!--timeToIdleSeconds:对象空闲时,指对象在多长时间没有被访问就会失效。只对eternal为 false 的有效。默认值为0。(单位:秒)--> <!--eternal如果为 true ,则缓存的数据始终有效--> <!--diskSpoolBufferSizeMB(磁盘缓存)的缓存区大小。默认是30MB--> <!--overflowToDisk如果内存中数据超过内存限制,是否要缓存到磁盘上--> <!--diskPersistent是否在磁盘上持久化。指重启JVM后,数据是否有效--> <!--memoryStoreEvictionPolicy如果内存中数据超过内存限制,向磁盘缓存定时的策略,默认值为LRU--> <cache name= "scorpiocache" maxBytesLocalDisk= "500M" maxBytesLocalHeap= "100M" timeToIdleSeconds= "0" timeToLiveSeconds= "0" eternal= "true" diskSpoolBufferSizeMB= "100" overflowToDisk= "true" diskPersistent= "true" memoryStoreEvictionPolicy= "LRU" /> |
timeToLiveSeconds和timeToIdleSeconds比较:(只有在eternal为false时,这2个属性才有效)
现在假设有如下配置:
timeToIdleSeconds=60
timeToLiveSeconds=180
则一个数据被添加进缓存后,该数据能够在缓存中存活的最长时间为180秒(timeToLiveSeconds),而在180秒内,假设不止一次去缓存中拿取该数据,那么相邻2次获取数据的时间间隔如果小于60秒(timeToIdleSeconds),则能成功获取到数据,但如果最近一次获取到下一次获取的时间间隔超过60秒,那么,将得到null,因为此时该数据已经被移出缓存了。
而且,timeToLiveSeconds必须大于timeToIdleSeconds才有意义。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步