在Aerospike中显示按键?

时间:2019-05-11 14:45:07

标签: aerospike

我是Aerospike的新手,可能缺少一些基本知识,但是我试图在Keys中看到Set的枚举(我故意避免使用“列表”一词因为它是数据类型)。

例如,

  • 要查看所有Namespaces,文档说要使用SHOW NAMESPACES
  • 要查看所有Sets,我们可以使用SHOW SETS

如果我想在Keys中看到所有唯一的Set ...我可以使用什么命令?

似乎可以使用client.scan() ...,但这似乎是获得 just 密钥的一种超级繁琐的方式(因为它也可以获取所有bin数据)。 / p>

任何建议都值得赞赏!到目前为止,我正在考虑将元记录插入(删除)。

2 个答案:

答案 0 :(得分:2)

感谢@pgupta向我指出正确的方向。

这实际上包括两个部分:

  1. 为了从服务器检索原始密钥,必须在put()调用期间设置策略以保存服务器端的密钥值(否则,似乎只存储了摘要/哈希?) 。

这是Python中的示例:

aerospike_client.put(key, {'bin': 'value'}, policy={'key': aerospike.POLICY_KEY_SEND})
  1. 然后(经过修改的Aerospike的own documentation),您执行扫描并将策略设置为不返回bin数据。从中,您可以提取密钥:

示例:

keys = []
scan = client.scan('namespace', 'set')
scan_opts = { 'concurrent': True, 'nobins': True, 'priority': aerospike.SCAN_PRIORITY_MEDIUM }
for x in (scan.results(policy=scan_opts)): keys.append(x[0][2])

对结果进行迭代的需求在我看来仍然有些笨拙;我仍然认为,就我而言,使用“主键”记录存储所有 other 键的列表将更有成效-这样,我可以简单地制作一个{{1 }}调用Aerospike服务器以检索列表。

答案 1 :(得分:1)

通过将ScanPolicy中的includeBinData设置为false,可以选择不带回数据。