我已經寫了hazelcast緩存framewrok進行緩存,並專門用於通過構造函數注入進行緩存的hazelcast服務器。只是想知道IMap對象存儲在哪裏?無論是在我的hazelcast服務器還是在我的應用程序中,這個類正在運行?要存儲在hazelcast中用於緩存的IMap中的數據存儲在hazelcast服務器中或hazelcast實例正在運行的位置?
public String hazelClientServer;
public static HazelcastInstance hazelcastInstance;
// setting through constructor injection
public HazelCastCache(String hazelClientServer) {
this.hazelClientServer = hazelClientServer;
}
private IMap<Object, Object> getMap(String mapName,String configName){
Config conf = new Config(configName);
MapConfig mapConfig = new MapConfig(mapName);
mapConfig.setEvictionPolicy(EvictionPolicy.LRU);
mapConfig.setEvictionPercentage(10);
conf.addMapConfig(mapConfig);
conf.getNetworkConfig().setPublicAddress(hazelClientServer);
hazelcastInstance = Hazelcast.getOrCreateHazelcastInstance(conf);
IMap<Object, Object> hazelMap=hazelcastInstance.getMap(mapName);
return hazelMap;
}
public Object getDataFromCache(String mapName,String configName,Object key){
IMap<Object, Object> dataMap = getMap(mapName,configName);
Object data = dataMap.get(key);
return data;
}
public void addDataToCache(String mapName,String configName,Object key,Object value){
IMap<Object, Object> dataMap = getMap(mapName,configName);
dataMap.put(key, value);
}
謝謝!您的建議對我來說有點用處。我的想法是數據駐留在hazelcast服務器中,並從那裏我的應用程序在本地進行重試。但當我重新啓動我的應用程序。服務器,緩存地圖是空的有點提高問題如何數據不會持久,因爲我沒有重新啓動hazelcast服務器。也許當應用程序服務器重新啓動映射緩存服務器也重置這可能是一種可能的情況下,第二個可以是你的。 –
您的理解在緩存重置上不正確。無論哪種情況,數據都只在Hazelcast容器中。但是,自從您開始使用嵌入式模式後,如果停止應用程序服務器,它也會關閉Hazelcast羣集,導致所有數據丟失。我寧願建議您將Hazelcast羣集作爲獨立羣集啓動,然後利用HazelcastClient訪問該HZ服務器中的數據。 –
好的..在這種情況下,我的數據將始終在榛樹集羣中,即使我重新啓動我的應用服務器,除非我做集羣清理? –