2016-04-27 81 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} –