我的项目中有以下配置
<defaultCache maxElementsInMemory="100" eternal="false" overflowToDisk="false" memoryStoreEvictionPolicy="LRU" statistics="false" />
<cache name="customerList" maxElementsInMemory="1000" eternal="false" overflowToDisk="false" memoryStoreEvictionPolicy="LRU" />
根据我的理解eternal =true
属性解释缓存永不过期。但是当我提到eternal =false
时,缓存将保持多长时间?
我还提到maxElementsInMemory=1000
,当我有超过1000个元素放入缓存时会发生什么。它们不会存储在缓存中并丢弃吗?
答案 0 :(得分:1)
这两个配置选项与两个基本缓存概念有关:
答案 1 :(得分:0)
当永恒为假时,您可以使用timeToLiveSeconds
属性控制项目在缓存中停留的时间。例如,对于1分钟后过期的物品:
<cache name="customerList" maxElementsInMemory="1000" eternal="false" timeToLiveSeconds="60" overflowToDisk="false" memoryStoreEvictionPolicy="LRU" />
如果您有超过1000个项目且已指定maxElementsInMemory=1000
,则其中只有1000个将存储在缓存中。 maxElementsInMemory
是一个上限。
答案 2 :(得分:0)
我很晚才回答这个问题。但是,由于我也经历过这个问题所以想分享我的经验。
您好@emilly,我已专门回答您的问题,我们将使用配置。由@RCB共享。
<cache name="customerList" maxElementsInMemory="1000" eternal="false" timeToLiveSeconds="60" overflowToDisk="false" memoryStoreEvictionPolicy="LRU" />
问题1:
as timeToLiveSeconds =&#34; 60&#34; 因此它是&#34; customerList&#34;的最长时间。数据将存在于缓存(L2)中。 缓存逐出与此属性的值没有直接关系( timeToLiveSeconds )。
e.g。如果<00> customerList 是在12:00:00创建的,则它将在12:00:59之前可用。
问题2: 说我想在1000之后添加一个元素。我缓存将驱逐最近最少使用的元素,并在列表中存储最新元素,因为我提到了memoryStoreEvictionPolicy。是吗?
是的,这是缓存(L2)驱逐,它将根据 memoryStoreEvictionPolicy =&#34; LRU&#34; 而在此示例中它将在TTL之前进行有效操作(60秒)。