我目前正在編寫一個應用程序,需要對關鍵/值存儲進行批量操作,此時我正在使用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如果值等於已知值
定式,如果值等於已知值
感謝, 馬庫斯