如何在Python中从Aerospike scan()输出的结果集中获取第n条记录,而不循环遍历所有结果?

时间:2018-07-28 17:47:56

标签: python aerospike

可能是python的初学者问题。

我能够像这样对aerospike db查询的结果进行迭代-

client = aerospike.client(config).connect()

scan = client.scan('namespace', 'setName')

scan.select('PK','expiresIn','clientId','scopes','roles')  # scan from aerospike


scan.foreach(process_result)

def process_result((key, metadata, record)):
       expiresIn = record.get("expiresIn")

现在,我要做的就是从这个集合中获取第n条记录,而不必遍历所有内容。

我尝试查看Get the nth item of a generator in Python,但意义不大。

2 个答案:

答案 0 :(得分:2)

扫描操作的结果来自集群中所有流水线的节点,没有特定顺序。从这种意义上说,在顺序方面,第一个记录或第N个记录之间没有区别。没有订单。

答案 1 :(得分:1)

通常,解决方法是将扫描策略设置为仅返回摘要,将其存储为列表(或具有较小列表的几条记录)并在批读取中进行分页。您可以设置合理的TTL,以便此结果集具有合理的时间长度。

如有需要,我可以提供示例代码。