当前位置: 首页 > 面试题库 >

Aerospike:如何获取记录密钥?

督飞羽
2023-03-14
问题内容

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

但这已完成NullPointerException,因为userKey为null。所有其他字段均有效。用户密钥是Long值,用于保存数据:

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

一切都很好,如果我这样发出单个请求:

client.get(readPolicy, new Key("namespaceName", "setName", userKey));

有什么问题吗?为什么userKey为null?


问题答案:

Aerospike使用密钥和设置名称来生成唯一的摘要,因此它仅存储摘要。

如果插入一条记录(如果已设置),writePolicy.sendKey = true则密钥将存储为记录的元数据。如果插入一条记录,writePolicy.sendKey = true则只有您将获得scanCallback()中的密钥。

默认情况下,writePolicy.sendKey为false,因此默认情况下scanCallback()null
用作键。这就是为什么您key.userKey.toLong()NullPointerException



 类似资料:
  • 我在Aerospike数据库中有一个名称空间:test and set:user。我通过控制台上的以下命令在users中添加了四条记录: 通过aql命令,我可以查看这四条记录。aql 我知道一个接一个地获取记录的方法,它在我这边运行得很好,但这对于我的任务来说是非常昂贵的操作。我想读取多个记录(批读取)并对其执行多个算法。我从https://www.aerospike.com/docs/clien

  • 我的应用程序中有一个名为posts的实体。帖子可以是其他帖子的子帖子,因此父帖子有hasMany('Posts'),子帖子有hasOne('post')。包含是无限的。 以下是模式: 如何递归地获取“Post_id”设置为null的第一篇帖子的所有子帖子和子帖子的子帖子等? 请不要在这里评论性能,我知道这样的模式很糟糕,我只想知道如何正确编写递归函数来检索无限嵌套的帖子。

  • 本文向大家介绍如何使用MySQL LIMIT订购记录并获取一些记录?,包括了如何使用MySQL LIMIT订购记录并获取一些记录?的使用技巧和注意事项,需要的朋友参考一下 让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 这将产生以下输出- 以下是查询以选择MySQL中的最后n行。在这里,我们首先在ASC中对其进行排序,并显示前4条记录- 这将产生

  • 如何获取与密钥关联的所有地理记录?我能够将数据推送到Redis中,并使用[lon、lat、buffer]进行检索 有没有办法单独使用密钥获取所有记录?下面是我使用geobuffer从redis中提取记录的代码。 而推我正在使用

  • 问题内容: 我使用Chart.js来显示每个月的预订数量。这是我的查询。一切正常。我的问题是,如果一个月没有预订,那么它什么也不会显示。没有零值。在图表上,我得到像 一月23 二月34 四月23 五月25 七月42 图表中显示了三月和六月。.在没有预订的月份中,如何获得零值。 要获得几个月的时间, 并获得预订号 问题答案: MySQL不会填写不可用的月份,它只会根据可用的内容进行分组,然后为您提供

  • 问题内容: 我从React-Router v3迁移到v4时遇到一些小问题。在v3中,我可以在任何地方执行此操作: 如何在v4中实现这一目标。 我知道当您在Component中时,可以使用hoc ,react上下文或事件路由器props。但对我而言并非如此。 我正在寻找v4中的NavigatingOutsideOfComponents的等效项 问题答案: 您只需要有一个导出对象的模块。然后,您将在整