gpt4 book ai didi

spring - Hazelcast 缓存未根据 <生存时间秒> 逐出

转载 作者:行者123 更新时间:2023-12-02 09:28:06 25 4
gpt4 key购买 nike

我们配置了<time-to-live-seconds>为 1200(20 分钟),但缓存在缓存创建时间一分钟后自动被逐出。

有人可以告诉我如何使缓存在指定的时间段内有效吗?

最佳答案

下面 hazelcast.xml 中的代码片段将“simpleMap”中条目的 time-to-live-seconds 属性设置为 150 秒。超过 150 秒且 150 秒内未更新的条目将自动从 map 中删除。

<map name="simpleMap">
<backup-count>0</backup-count>
<max-idle-seconds>0</max-idle-seconds>
<eviction-policy>LRU</eviction-policy>
<time-to-live-seconds>30</time-to-live-seconds>
<max-size>3000</max-size>
<eviction-percentage>30</eviction-percentage>
<merge-policy>com.hazelcast.map.merge.PutIfAbsentMapMergePolicy</merge-policy>
</map>

我已将一个条目监听器(如果使用 ver3.5,请使用 MapListener 接口(interface))附加到“simpleMap”以进行测试,每当条目从 map 中逐出时,它就会打印键和值。

public static void main(String[] args) 
{
HazelcastInstance instance = HazelcastHelper.getHazelcastInstance();
IMap<String, String> map = instance.getMap("simpleMap");
map.addEntryListener(new SimpleMapEntryListener(), true);

map.put("evictme", "value");
printTime();
try {
Thread.sleep(1000 * 60);
} catch (InterruptedException e) {
e.printStackTrace();
}
printTime();
}

private static void printTime()
{
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
System.out.println( sdf.format(cal.getTime()) );
}

class SimpleMapEntryListener implements EntryListener<String, String>
{

@Override
public void entryEvicted(EntryEvent<String, String> arg0)
{
System.out.println("Key : " + arg0.getKey() + " Value: " + arg0.getOldValue() + " evicted.");
// print current time here.
}
// Add other overriden methods.

}

如果执行上面给出的代码,您可以看到条目 <"evictme", "value"> 仅在 30 秒后自动被逐出。

您可能还需要检查您的 max-idle-seconds 配置(请参阅上面的示例,它设置为零,这意味着无限)。如果设置了(即不为零),缓存将根据 max-idle-seconds 被驱逐。

关于spring - Hazelcast 缓存未根据 <生存时间秒> 逐出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32716425/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com