2016-04-27 26 views
0

我的缓存将包含可能未同步数据库的元素。Hazelcast IMap - 如何清除loadAll上的所有元素(true)

例如, 在某些使用情况下,我在IMap中使用了set/putTransient,以便元素只会在缓存中。

IMap.loadAll(true)不会从缓存中清除那些未同步的元素。

建议请...

更新:我reload命令

@JMXMethod 
    public void reload(){ 
     log.info("Reloading Cache - [{}] ... ", cachename()); 
      cache().loadAll(true); 
    } 
+0

出于某种原因,数据删除数据库和我想重新加载所有从数据库的最新转储,如何实现这一目标? –

+0

不知道我真的明白你的问题吗?你能再详述一下吗? – noctarius

+0

可以说,EmployeeCache反映了DB中Employee表中的所有元素。其他一些有权访问数据库的应用程序会删除员工A的记录。当我重新加载()我的缓存时,员工 - A记录不应该在缓存中。 –

回答

0

只需调用map.clear(),然后map.loadAll(真)

+0

在.clear()和loadAll()之间的时间间隔中,如果缓存获取元素的请求,缓存将返回空值。 –

+0

不,如果您的加载设置为急切,在这种情况下,get调用将触发加载,因此您将显式调用loadAll,因为加载将进行。 (或者如果负载需要几毫秒,它会再次触发负载,但很少出现这种情况) –

+0

我确实有mapStoreConfig.setInitialLoadMode(InitialLoadMode.EAGER);当我几个小时后发出重装()缓存得到利用\t @JMXMethod \t公共无效重装(){ \t \t log.info加载( “重装缓存 - [{}] ...”,cachename()) ; \t \t \t cache()。loadAll(true); \t \t} –

相关问题