代码之家  ›  专栏  ›  技术社区  ›  Sandeepan Nath

与获取Aerospike集合中记录总数相关的澄清?需要Lua脚本吗?

  •  3
  • Sandeepan Nath  · 技术社区  · 7 年前

    我想通过python获取Aerospike集合中的记录总数。 我猜,它是在 show sets -

    aql> show sets
    +-----------+------------------+----------------+-------------------+----------------+---------------------+--------------------------------------------+------------+
    | n_objects | disable-eviction | set-enable-xdr | stop-writes-count | n-bytes-memory | ns_name             | set_name                                   | set-delete |
    +
    | 179       | "true"           | "use-default"  | 0                 | 0              | "namespace"         | "setName"                        | "false"    |
    

    从我读到的内容来看,似乎只有通过Lua脚本才能实现- https://discuss.aerospike.com/t/fastest-way-to-count-records-returned-by-a-query/2379/4

    有人能证实吗? 但是,我可以通过使用计数器变量通过迭代 select() 和上面的数字相符-

    client = aerospike.client(config).connect()
    
    scan = client.scan('namespace', 'set')
    
    scan.select('PK','expiresIn','clientId','scopes','roles') 
    scan.foreach(process_result)
    print "Total aeroCount"
    print aeroCount
    
    
    def process_result((key, metadata, record)):
        global aeroCount
        aeroCount=aeroCount+1
    

    更新

    我试过运行命令 asinfo -v sets 首先在命令行上。它也给了我物品的数量,像这样-

    ns=namespace:set=setName:objects=29949: .

    不确定如何准确地从中获取对象对集的计数。这个命令是否符合python函数的命令?我试过了

    client = aerospike.client(config).connect()
    response = client.info_all("asinfo -v sets")
    

    我犯了一个错误-

      File "Sandeepan-oauth_token_cache_complete_sanity_cp.py", line 89, in <module>
        response = client.info_all("asinfo -v sets")
    AttributeError: 'aerospike.Client' object has no attribute 'info_all'
    
    1 回复  |  直到 7 年前
        1
  •  3
  •   pgupta    7 年前

    观察 https://www.aerospike.com/apidocs/python/client.html?highlight=info#aerospike.Client.info_all -info_all()在python客户机中,通过下面的info命令引用传递正确的info命令: https://www.aerospike.com/docs/reference/info

    这个 sets INFO命令提供即时统计信息,例如指定集合中的对象数。

    $ python
    >>> import aerospike
    >>> aerospike.__version__
    '2.1.2'
    >>> config = {'hosts':[("127.0.0.1", 3000)]}
    >>> client = aerospike.client(config).connect()
    >>> client.info("sets")
    {'BB9BE1CFE290C00': (None, 'ns=test:set=testMap:objects=1:tombstones=0:memory_data_bytes=0:truncate_lut=0:stop-writes-count=0:set-enable-xdr=use-default:disable-eviction=false;\n')}