java – Aerospike:如何获得记录密钥?

前端之家收集整理的这篇文章主要介绍了java – Aerospike:如何获得记录密钥?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Aerospike客户端具有 scanAll方法来读取其商店中的所有行.
我在下面的代码中使用它:
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());
    }
});

但是,由于userKey为null,所以NullPointerException完成.所有其他字段按预期有效.用户密钥是Long值,用于保存数据:

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

一切都好,如果我这样做单一请求:

client.get(readPolicy,userKey));

可能有什么不对为什么userKey为空?

解决方法

Aerospike使用密钥和集名称生成唯一的摘要,所以它只存储摘要.

如果设置了writePolicy.sendKey = true,则插入一条记录,则key将作为记录的元数据存储.
如果使用writePolicy.sendKey = true插入一条记录,那么只有在scanCallback()中才能获得关键字.

默认情况下,writePolicy.sendKey为false,所以默认情况下scanCallback()将为null.这就是为什么你的key.userKey.toLong()给出NullPointerException.

猜你在找的Java相关文章