我是Aerospike的新手,可能缺少一些基本的东西,但是我试图在Set
中看到Keys
的枚举(我故意避免了"列表"一词因为它是数据类型(。
例如,
- 要查看所有
Namespaces
,文档说要使用SHOW NAMESPACES
- 要查看所有
Sets
,我们可以使用SHOW SETS
如果我想在Set
中查看所有唯一的Keys
...我可以使用什么命令?
似乎可以使用 client.scan()
...但是这似乎是一种超重的方法来获得 (因为它也获取了所有bin数据(。
任何建议都将不胜感激!截至目前,我正在考虑将(删除(插入(来自(元记录中。
谢谢你@pgupta指向我的方向正确。
这实际上有两个部分:
- 为了从服务器检索原始键,必须 - 在
put()
调用期间 - 设置策略以保存键值服务器端(否则,似乎只存储了一个摘要/哈希?(。
这是Python中的一个例子:
aerospike_client.put(key, {'bin': 'value'}, policy={'key': aerospike.POLICY_KEY_SEND})
- 然后(修改了Aerospike自己的文档(,您执行扫描并设置策略以不返回垃圾箱数据。从中,您可以提取键:
示例:
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])
需要迭代结果对我来说仍然有些笨拙。我仍然认为,使用"主键"记录存储所有其他密钥的列表将更具性能,在我的情况下 - 我可以简单地将一个get()
调用到检索列表的Aerospike服务器。
您可以选择不要通过设置scanpolicy中的bindata将数据带回false。