首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hazelcast:如何刷新Hazelcast实例?

Hazelcast:如何刷新Hazelcast实例?
EN

Stack Overflow用户
提问于 2016-02-22 15:01:34
回答 2查看 9.4K关注 0票数 0

我正在创建一个服务(ReST),它将一直处于启动和运行状态。因此,在此服务中,我从spring上下文调用init方法,该方法命中数据库并将所需数据加载到hazelcast实例中。

现在,我必须确保通过调用init方法来刷新hazelcast实例。假设刷新周期为每6小时一次。

有没有一种干净的好方法来实现这一点呢?

EN

回答 2

Stack Overflow用户

发布于 2016-03-24 00:02:47

这可以通过实现Hazelcast提供的EntryListener接口轻松实现。

实现以下方法并调用init()方法。

代码语言:javascript
复制
IMap<> map = hzInstance.getMap("mapName");
map.addEntryListener(new MyMapEventListener());

public class MyMapEventListener implements EntryListener{
    @Override
    public void mapCleared(MapEvent mapEvent) {
        //Make your init call inside this
    }

    @Override
    public void mapEvicted(MapEvent mapEvent) {
        //Make your init call inside this
    }
}

让我知道这是否有意义。

票数 2
EN

Stack Overflow用户

发布于 2016-02-22 15:27:50

你可以使用Hazelcast eviction policy来解决这个问题。

<time-to-live-seconds>3600</time-to-live-seconds>

它每隔1小时清除一次地图内容,当有任何请求到来时,它会从加载器重新加载地图内容。

下面是Hazelcast地图配置之一

代码语言:javascript
复制
...
    <!--
        Maximum number of seconds for each entry to stay in the map. Entries that are
        older than <time-to-live-seconds> and not updated for <time-to-live-seconds>
        will get automatically evicted from the map.
        Any integer between 0 and Integer.MAX_VALUE. 0 means infinite. Default is 0.
    -->
    <time-to-live-seconds>0</time-to-live-seconds>
...

也可以在将数据添加到缓存映射的同时添加时间,在指定时间之后,特定的缓存映射也可以被清除。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35547564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档