请教一个关于xmemcached的问题
liyong705
2011-03-07
用xmemcached 来操作 新浪的memcachdb
1. 先写入100个测试数据 XMemcachedClient client = new XMemcachedClient(); client.addServer("192.168.0.237", 3333); client.addServer("192.168.0.236", 3333); client.setOpTimeout(5000L); //设置超时 String key = ""; for (int i = 0; i < 100; i++) { key = String.valueOf(i); client.set(key, 0, "value" + key); } System.out.println("ok"); 2. 读取数据 XMemcachedClient client = new XMemcachedClient(); client.addServer("192.168.0.237", 3333); client.addServer("192.168.0.236", 3333); client.setOpTimeout(5000L); //设置超时 String key = ""; for (int i = 0; i < 100; i++) { key = String.valueOf(i); System.out.println(client.get(key)); } System.out.println("ok"); 这样是没有问题的 如果把: client.addServer("192.168.0.237", 3333); client.addServer("192.168.0.236", 3333); 换成 client.addServer("192.168.0.236", 3333); client.addServer("192.168.0.237", 3333); 也就是把顺序换1下,则就读不出来了,全部为空,请教? |
|
dennis_zane
2011-03-07
liyong705 写道 用xmemcached 来操作 新浪的memcachdb
1. 先写入100个测试数据 XMemcachedClient client = new XMemcachedClient(); client.addServer("192.168.0.237", 3333); client.addServer("192.168.0.236", 3333); client.setOpTimeout(5000L); //设置超时 String key = ""; for (int i = 0; i < 100; i++) { key = String.valueOf(i); client.set(key, 0, "value" + key); } System.out.println("ok"); 2. 读取数据 XMemcachedClient client = new XMemcachedClient(); client.addServer("192.168.0.237", 3333); client.addServer("192.168.0.236", 3333); client.setOpTimeout(5000L); //设置超时 String key = ""; for (int i = 0; i < 100; i++) { key = String.valueOf(i); System.out.println(client.get(key)); } System.out.println("ok"); 这样是没有问题的 如果把: client.addServer("192.168.0.237", 3333); client.addServer("192.168.0.236", 3333); 换成 client.addServer("192.168.0.236", 3333); client.addServer("192.168.0.237", 3333); 也就是把顺序换1下,则就读不出来了,全部为空,请教? 读的时候换顺序?那肯定会造成这个后果,默认是采用余数哈希的散列分布,假设"1"原来存储在"192.168.0.237",你换一个顺序,它读的时候却去"192.168.0.236"上找,肯定找不到,你这里就两个服务器,读的时候调个顺序,都找不到了。 另外,memcachedb直到1.0这个版本才支持multi get,如果是之前的版本,在使用memcachedb要关闭multi get优化: memcachedClient.setOptimizeGet(false); |