Il client Aerospike ha il metodo scanAll per leggere tutte le righe dal suo negozio. Io lo uso nel codice folowing:Aerospike: come posso ottenere la chiave di registrazione?
ScanPolicy policy = new ScanPolicy();
policy.concurrentNodes = true;
policy.priority = Priority.DEFAULT;
policy.includeBinData = true;
policy.scanPercent = 100;
client.scanAll(policy, "namespaceName", "setName", new ScanCallback() {
@Override
public void scanCallback(Key key, Record record) throws AerospikeException {
STORE.put(key.userKey.toLong(), record.getValue("binName").toString());
}
});
ma è finito con NullPointerException
, perché UserKey è nullo. Tutti gli altri campi sono validi come previsto. Chiave utente è il valore a lungo, che è stato utilizzato per il salvataggio dei dati:
client.put(writePolicy, new Key("namespaceName", "setName", userKey), new Bin("binName", value));
Tutto va bene, se lo faccio un'unica richiesta in questo modo:
client.get(readPolicy, new Key("namespaceName", "setName", userKey));
cosa può essere sbagliato? Perché userKey è nullo?
Grazie mille per il vostro tempo e buona risposta! – DmitryKanunnikoff