我创建了一个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());
}
}
请您给我一个示例,我可以在这里为近缓存实现而适合。
答案 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()