在 Aerospike 中显示密钥?

SHOW KEYS in Aerospike?

我是 Aerospike 的新手,可能遗漏了一些基本知识,但我试图在 Set 中查看 Keys 的枚举(我有意避免 "list" 因为它是一种数据类型)。

例如,

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

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

如有任何建议,我们将不胜感激!截至目前,我正在考虑向(从)元记录中插入(删除)。

您可以通过将 ScanPolicy 中的 includeBinData 设置为 false 来选择不恢复数据。

感谢@pgupta 为我指明了正确的方向。

这实际上有两部分:

  1. 为了从服务器检索原始密钥,必须在 put() 调用期间设置策略以保存密钥值 server-side(否则,似乎只有 digest/hash 被存储?)。

这是 Python 中的示例:

aerospike_client.put(key, {'bin': 'value'}, policy={'key': aerospike.POLICY_KEY_SEND})
  1. 然后(修改了 Aerospike 的 own documentation),您执行扫描并将策略设置为不 return 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])

迭代结果的需要对我来说仍然有点笨拙;我仍然认为使用 'master-key' 记录来存储所有 other 键的列表会更高效,在我的例子中——这样,我可以简单地做一个get() 调用 Aerospike 服务器以检索列表。