2016-02-12 65 views
1

我試圖使用hazelcast 3.6版本進行簡單演示。基本上,我啓動了控制檯應用程序,然後從客戶端代碼向集羣添加了一個元素。Hazelcast 3.6 - 地圖獲取元素

public class GettingStartedClient { 

    public static void main(String[] args) { 
     ClientConfig clientConfig = new ClientConfig(); 
     clientConfig.addAddress("127.0.0.1:5704"); 
     HazelcastInstance client = HazelcastClient.newHazelcastClient(clientConfig); 
     IMap<Integer, String> map = client.getMap("customers"); 
     System.out.println("Map Size:" + map.size()); 
     for (int i = 0; i < map.size(); i++) { 
      System.out.println(map.get(i+1)); 
     } 
     map.put(0, "Emre"); 

    } 

} 

後來,使用命令行我切換到ns客戶端,並執行m.get,m.values和m.keys命令。 m.values和m.keys正在返回地圖中的元素,但m.get返回null。

hazelcast[customers] > m.keys 
0 
Total 1 

hazelcast[customers] > m.values 
Emre 
Total 1 

hazelcast[customers] > m.get 0 
null 

我是否缺少些什麼?任何幫助表示讚賞。

回答

1

Hazelcast控制檯假設的關鍵是一個字符串,並試圖尋找鍵「0」,這不存在

2

在演示應用中使用的關鍵不是整數,但字符串。所以爲了使其工作,你的客戶端代碼應該是這樣的:

public static void main(String[] args) { 
    ClientConfig clientConfig = new ClientConfig(); 
    clientConfig.addAddress("127.0.0.1:5704"); 
    HazelcastInstance client = HazelcastClient.newHazelcastClient(clientConfig); 
    IMap<String, String> map = client.getMap("customers"); 
    System.out.println("Map Size:" + map.size()); 
    for (int i = 0; i < map.size(); i++) { 
     System.out.println(map.get(i+1)); 
    } 

    map.put("0", "Emre"); 
} 

您可以檢出從GitHub上的演示應用程序的源代碼: https://github.com/hazelcast/hazelcast/blob/master/hazelcast/src/main/java/com/hazelcast/console/ConsoleApp.java