在hazelcast和Java中以编程方式设置Near Cache验证Near缓存是否从本地缓存返回数据

时间:2014-10-21 09:43:37

标签: java hazelcast distributed-caching

我创建了一个Hazelcast设置,其中一个节点运行hazelcast实例。我的客户端应用程序正在使用客户端配置从Hazelcast实例读取缓存。 我想在我的客户端应用程序中实现Near缓存以将其用作本地缓存。 能不能给我一个例子,我可以看看它是如何在java中使用的。 我目前的代码是这个

Hazel cast缓存节点

public class HazelCastNode1 {

    public static void main(String[] args) {
        Config cfg = new Config();
        HazelcastInstance instance = Hazelcast.newHazelcastInstance(cfg);
        Map<Integer, String> citiesMap = instance.getMap("Cities");

        for(int i = 0; i < 100000; i++){
            citiesMap.put(i, "Vienna"+i);
        }
        System.out.println("Map Size:" + citiesMap.size()); 
    }
}

客户代码

public class ReadClient {
    public static void main(String[] args) {
        ClientConfig clientConfig = new ClientConfig();
        HazelcastInstance client = HazelcastClient.newHazelcastClient(clientConfig);
        IMap<Integer, String> cumap = client.getMap("Cities");
        System.out.println(cumap.size());
    }  
}

请您给我一个示例,我可以在这里为近缓存实现而适合。

2 个答案:

答案 0 :(得分:4)

您能够弄清楚这是代码

public class ReadClient {

    public static void main(String[] args) {

        ClientConfig clientConfig = new ClientConfig();

        NearCacheConfig ncc = clientConfig.getNearCacheConfig("Cities");
        if(ncc == null){
            ncc = new NearCacheConfig();
        }
        ncc.setCacheLocalEntries(true);
        ncc.setEvictionPolicy("LRU");
        ncc.setMaxSize(500000);
        ncc.setInvalidateOnChange(true); 
        Map<String, NearCacheConfig> nearCache =  new HashMap<String, NearCacheConfig>();
        nearCache.put("CitiesLocal", ncc);
        clientConfig.addNearCacheConfig("Cities", ncc);
          HazelcastInstance client = HazelcastClient.newHazelcastClient(clientConfig);

        IMap<Integer, String> cumap = client.getMap("Cities");

        System.out.println(cumap.size());
        for(int i = 0 ; i < 100; i++){
            cumap.get(1);
        }

        System.out.println(cumap.getLocalMapStats().getNearCacheStats().getHits());
        cumap = client.getMap("CitiesLocal");
        System.out.println(cumap.size());
    }

}

但我仍有一个问题,如何验证近缓存是否返回数据,并且每次都不是远程调用。

答案 1 :(得分:0)

我不知道是否有任何记录,如果有近乎缓存被击中。

宣读指标:

yourmap.getLocalMapStats().getNearCacheStats().getHits()