java – Aerospike:如何获得记录密钥?
发布时间:2020-12-14 16:42:48 所属栏目:Java 来源:网络整理
导读:Aerospike客户端具有 scanAll方法来读取其商店中的所有行. 我在下面的代码中使用它: ScanPolicy policy = new ScanPolicy();policy.concurrentNodes = true;policy.priority = Priority.DEFAULT;policy.includeBinData = true;policy.scanPercent = 100;cli
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为false,所以默认情况下scanCallback()将为null.这就是为什么你的key.userKey.toLong()给出NullPointerException. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |