我目前正在编写一个应用程序,需要对关键/值存储进行批量操作,此时我正在使用membase。Java + Membase + spymemcached批量操作
spymemcached允许批量获取,但不能批量CAS或添加;如果实施,我认为这些功能将被广泛使用。
此时我的一组批量操作代码大致如下所示。
“client”是一个MemcachedClient。
ArrayList<Future<Boolean>> futures = new ArrayList<Future<Boolean>>();
ArrayList<String> bulkGet = new ArrayList<String>();
for(int i=0; i<50; i++){
String key = "Key_" + x + "_" + i;
Future<Boolean> fut = client.add(key, 0, "Value_" + x + "_" + i);
futures.add(fut);
bulkGet.add(key);
}
int count = 0;
for(Future<Boolean> fut : futures){
if(fut.get()==true){
count++;
}
}
System.out.println("Added " + count + " records.");
Map<String,Object> bulkGot = client.getBulk(bulkGet);
System.out.println("Retrieved " + bulkGot.size() + " records");
Future.get()上的阻塞调用似乎效率很低,有没有更好的方法?在我的实际情况下,我希望能够在他们回来后立即处理期货(这可能会或可能不会按照他们发送的顺序)。
此外,以下操作是否可能(或计划实施)?
- 添加或返回现有值
-Delete如果值等于已知值
定式,如果值等于已知值
感谢, 马库斯