检查Aerospike集是否为python空的最简单方法是什么?

时间:2019-06-11 11:44:16

标签: python aerospike

我没有在Python client中看到用于检查给定集合是否为空的方法。

作为命令行中的文档says,我可以使用:

asinfo -h <host> -v 'sets/<namespace>/<set>'

但这仅适用于单个主机。

另一种方法是查看以下内容的输出:

asadm -h <host> -e 'info set'

您将如何在Python中实现这种方法?

2 个答案:

答案 0 :(得分:1)

在客户端中使用“信息” API:https://www.aerospike.com/apidocs/python/client.html#aerospike.Client.info_all

client.info_all("sets/<namespace>/<set>")

然后将您感兴趣的统计信息相加。

答案 1 :(得分:1)

这是我的python实现:

def _info_result_prop_value(info_result, prop_name, default):
    result_split = info_result.split(':')
    return next((s.strip().split('=', 2)[1] for s in result_split
                 if s.strip().startswith(f'{prop_name}=')), default)


def count_objects(client, ns, set_name):
    count = 0
    for info_result in client.info_all(f"sets/{ns}/{set_name}").values():
        count += int(_info_result_prop_value(info_result[1], 'objects', '0'))
    return count


def is_empty_set(client, ns, set_name):
    return count_objects(client, ns, set_name) == 0