讀取多個記錄我有一個命名空間:測試和設置:用戶在塞式數據庫。我通過控制檯上的以下命令在用戶中添加四條記錄:獲取空的記錄,而在塞式
ascli put test users barberakey '{"username":"Barbera","password":"barbera","gender":"f","region":"west","company":"Audi"}'
通過aql命令,我可以查看這四條記錄。 aql> select * from test.users。
我知道逐個獲取記錄的方法,它在我身邊運行良好,但對於我的任務而言,這是非常昂貴的操作。我想要讀取多個記錄(批量讀取)並對它們執行多個算法。我接受https://www.aerospike.com/docs/client/java/usage/kvs/batch.html的指導,編寫如下代碼:
Key [] keys = new Key [4];
for (int i = 0; i < 4; i++) {
keys[i] = new Key("test", "users", (i + 1));
System.out.println("Keys: "+keys[i]);
}
Record[] records = client.get(batchPolicy, keys);
System.out.println("Length of Records : "+records.length);
for(int a=0;a<records.length;a++){
System.out.println("RECORDS IN ARRAY: "+records[a]);
}
但問題是,它讀取鍵,但給數組記錄爲空。
Output:
Reading records from Aerospike DB
Keys: test:users:1:3921e84015258aed3b93d7ef5770cd27b9bb4167
Keys: test:users:2:1effb3ce25b23f92c5371dee0ac8e6b34f5703c6
Keys: test:users:3:d17519d72e22beab2c3fa1552910ea3380c262bd
Keys: test:users:4:3f09a505c913db8ad1118e20b78c5bb8495fb0f9
Length of Records : 4
RECORDS IN ARRAY: null
RECORDS IN ARRAY: null
RECORDS IN ARRAY: null
RECORDS IN ARRAY: null
請指導我的情況。
......
當你跑這個時,是否有任何遷移?你能提供'asadm -e info'的輸出嗎? – kporter
遷移期間,批處理請求可能不會返回所有值;當前的批處理實現不會代理批處理內的請求。即將發佈的3.6.x版本將包含一個新的批處理操作,該批處理操作以更高的優先級運行,並且將代理如果記錄可能存在於另一個節點上。 – kporter
你有什麼想法,我怎樣才能達到我的目的?其實我得到的記錄,然後保存到一個arrayList,然後對其應用操作。我想避免寫入arrayList,並希望直接在記錄上進行操作。 –