Java – aerospike: how to get the record key?

The aerospike client has a scanall method to read all rows in its store

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());
    }
});

However, since the userkey is null, the NullPointerException completes All other fields are valid as expected The user key is a long value used to save data:

client.put(writePolicy,new Key("namespaceName",userKey),new Bin("binName",value));

Everything is fine. If I do this, single request:

client.get(readPolicy,userKey));

What might be wrong? Why is the userkey empty?

Solution

Aerospike uses keys and set names to generate unique summaries, so it only stores summaries

If writepolicy. Is set Sendkey = true, insert a record, and the key will be stored as the metadata of the record If you use writepolicy Sendkey = true inserts a record, then the keyword can only be obtained in scancallback()

By default, writepolicy Sendkey is false, so scancallback() will be null by default That's why your key userKey. Tolong() gives NullPointerException

The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>