<?xml version="1.0" encoding="UTF-8"?>
<ehcache name="myEncache">

    <!--
        diskStore:为缓存路径，ehcache分为内存和磁盘 2级，此属性定义磁盘的缓存位置
        user.home - 用户主目录
        user.dir - 用户当前工作目录
        java.io.tmpdir - 默认临时文件路径
    -->
    <diskStore path="/opt/dataease/data/ehcache"/>
    <!--
        name:缓存名称。
        maxElementsInMemory:jvm缓存最大数目
        maxElementsOnDisk：硬盘最大缓存个数。
        eternal:对象是否永久有效，一但设置了，timeout将不起作用。
        overflowToDisk:是否保存到磁盘，当系统宕机时
        timeToIdleSeconds:设置对象在失效前的允许闲置时间（单位：秒）。仅当eternal=false对象不是永久有效时使用，可选属性，默认值是0，也就是可闲置时间无穷大。
        timeToLiveSeconds:设置对象在失效前允许存活时间（单位：秒）。最大时间介于创建时间和失效时间之间。仅当eternal=false对象不是永久有效时使用，默认是0.，也就是对象存活时间无穷大。
        diskPersistent：是否缓存虚拟机重启期数据 Whether the disk store persists between restarts of the Virtual Machine. The default value is false.
        diskSpoolBufferSizeMB：这个参数设置DiskStore（磁盘缓存）的缓存区大小。默认是30MB。每个Cache都应该有自己的一个缓冲区。
        diskExpiryThreadIntervalSeconds：磁盘失效线程运行时间间隔，默认是120秒。
        memoryStoreEvictionPolicy：当达到maxElementsInMemory限制时，Ehcache将会根据指定的策略去清理内存。默认策略是LRU（最近最少使用）。你可以设置为FIFO（先进先出）或是LFU（较少使用）。
        clearOnFlush：内存数量最大时是否清除。
        memoryStoreEvictionPolicy:可选策略有：LRU（最近最少使用，默认策略）、FIFO（先进先出）、LFU（最少访问次数）。
            FIFO，first in first out，这个是大家最熟的，先进先出。
            LFU， Less Frequently Used，就是上面例子中使用的策略，直白一点就是讲一直以来最少被使用的。如上面所讲，缓存的元素有一个hit属性，hit值最小的将会被清出缓存。
            LRU，Least Recently Used，最近最少使用的，缓存的元素有一个时间戳，当缓存容量满了，而又需要腾出地方来缓存新的元素的时候，那么现有缓存元素中时间戳离当前时间最远的元素将被清出缓存。
-->
    <defaultCache
            eternal="false"
            maxElementsInMemory="1000"
            overflowToDisk="false"
            diskPersistent="false"
            timeToIdleSeconds="0"
            timeToLiveSeconds="600"
            memoryStoreEvictionPolicy="LRU"
    />
    <cache
            name="users_info"
            eternal="false"
            maxElementsInMemory="100"
            maxElementsOnDisk="1000"
            overflowToDisk="true"
            diskPersistent="true"
            timeToIdleSeconds="1800"
            timeToLiveSeconds="3600"
            memoryStoreEvictionPolicy="LRU"
    />
    <cache
            name="users_roles_info"
            eternal="false"
            maxElementsInMemory="100"
            maxElementsOnDisk="1000"
            overflowToDisk="true"
            diskPersistent="true"
            timeToIdleSeconds="1800"
            timeToLiveSeconds="3600"
            memoryStoreEvictionPolicy="LRU"
    />
    <cache
            name="users_permissions_info"
            eternal="false"
            maxElementsInMemory="100"
            maxElementsOnDisk="1000"
            overflowToDisk="true"
            diskPersistent="true"
            timeToIdleSeconds="1800"
            timeToLiveSeconds="3600"
            memoryStoreEvictionPolicy="LRU"
    />

    <cache
            name="lic_info"
            eternal="false"
            maxElementsInMemory="10"
            overflowToDisk="false"
            diskPersistent="false"
            timeToIdleSeconds="60"
            timeToLiveSeconds="60"
            memoryStoreEvictionPolicy="FIFO"
    >
        <cacheEventListenerFactory class="io.dataease.listener.LicCacheEventListener" />
    </cache>

    <cache
            name="jdbc_provider_cache"
            eternal="false"
            maxElementsInMemory="100"
            maxElementsOnDisk="10000"
            overflowToDisk="true"
            diskPersistent="true"
            timeToIdleSeconds="28800"
            timeToLiveSeconds="86400"
            memoryStoreEvictionPolicy="LRU"
    />


    <!--消息渠道缓存-->
    <cache
        name="sys_msg_channel"
        eternal="true"
        maxElementsInMemory="100"
        maxElementsOnDisk="1000"
        overflowToDisk="true"
        diskPersistent="false"
    />

    <!--消息类型缓存-->
    <cache
        name="sys_msg_type"
        eternal="true"
        maxElementsInMemory="100"
        maxElementsOnDisk="1000"
        overflowToDisk="true"
        diskPersistent="false"
    />

    <!--消息类型缓存-->
    <cache
        name="sys_msg_user_subscribe"
        eternal="false"
        maxElementsInMemory="100"
        maxElementsOnDisk="10000"
        overflowToDisk="true"
        diskPersistent="false"
        timeToIdleSeconds="28800"
        timeToLiveSeconds="86400"
        memoryStoreEvictionPolicy="LRU"
    />


</ehcache>