Aerospike: how do I get record key?(Aerospike:我如何获得记录密钥?)
问题描述
Aerospike 客户端具有 scanAll 方法,用于从其存储中读取所有行.我在以下代码中使用它:
Aerospike client has scanAll method for reading all rows from it's store. I use it in the folowing code:
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());
}
});
但它以 NullPointerException 结束,因为 userKey 为空.所有其他字段都按预期有效.User key 是 Long 值,用于保存数据:
But it is finished with NullPointerException, because userKey is null. All other fields are valid as expected. User key is the Long value, that was used for saving data:
client.put(writePolicy, new Key("namespaceName", "setName", userKey), new Bin("binName", value));
一切都很好,如果我像这样提出单个请求:
All is fine, if I do single request like this:
client.get(readPolicy, new Key("namespaceName", "setName", userKey));
可能有什么问题?为什么 userKey 为空?
What may be wrong? Why userKey is null?
推荐答案
Aerospike 使用 key 和 set name 生成唯一的摘要,所以它只存储摘要.
Aerospike uses key and set name to generate unique digest, So it stores only digest.
在插入一条记录时,如果您设置 writePolicy.sendKey = true,那么 key 将被存储为记录的元数据.如果使用 writePolicy.sendKey = true 插入一条记录,那么只有你会在 scanCallback() 中获得密钥.
While inserting one record if you set writePolicy.sendKey = true then key will be stored as metadata of record.
If one record is inserted with writePolicy.sendKey = true then only you will get key in scanCallback().
默认 writePolicy.sendKey 为 false,所以默认 scanCallback() 获取 null 作为键.这就是为什么您的 key.userKey.toLong() 给出 NullPointerException.
By default writePolicy.sendKey is false, so by default scanCallback() gets null as key. Thats why your key.userKey.toLong() gives NullPointerException.
这篇关于Aerospike:我如何获得记录密钥?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Aerospike:我如何获得记录密钥?
基础教程推荐
- 无法复制:“比较方法违反了它的一般约定!" 2022-01-01
- 问题http://apache.org/xml/features/xinclude测试日志4j 2 2022-01-01
- Spring AOP错误无法懒惰地为此建议构建thisJoinPoin 2022-09-13
- 修改 void 函数的输入参数,然后读取 2022-01-01
- Struts2 URL 无法访问 2022-01-01
- 使用堆栈算法进行括号/括号匹配 2022-01-01
- RabbitMQ:消息保持“未确认"; 2022-01-01
- REST Web 服务返回 415 - 不支持的媒体类型 2022-01-01
- 如何对 Java Hashmap 中的值求和 2022-01-01
- 存储 20 位数字的数据类型 2022-01-01
