• ehcache简单配置


    <?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才有意义。

  • 相关阅读:
    人名币转大写
    Http协议与TCP协议简单理解
    unity3d常用属性汇总
    ConcurrentHashMap的key value不能为null,map可以?
    一个线程池中的线程异常了,那么线程池会怎么处理这个线程?
    Dubbo负载均衡算法
    [LeetCode] 240. 搜索二维矩阵 II ☆☆☆(二分查找类似)
    [LeetCode] 74. 搜索二维矩阵 ☆☆☆(二分查找)
    Maven中的dependencyManagement 意义
    深入理解maven构建生命周期和各种plugin插件
  • 原文地址:https://www.cnblogs.com/brxHqs/p/11612848.html
Copyright © 2020-2023  润新知