как получить все имена бинов для заданного набора aerospike

Я пытаюсь получить все имена бинов для некоторого набора аэрошпилей. Я могу сделать это в командной строке, но выполняю

asinfo -v 'bins/<my_set_name>'

Я ищу код Java/Scala, который может сделать то же самое. Версия клиента aerospike, которую я использую, — «3.1.6».


person Julias    schedule 17.01.2016    source источник


Ответы (2)


Вам нужно будет отсканировать набор и составить список имен бинов для набора.

Также предоставленная вами информационная команда не будет работать с именем набора, для нее потребуется имя пространства имен. См. раздел bins в справочнике по командам.

Чтобы выполнить команду bins в вашем клиенте, должен быть API info, который будет принимать те же входные данные, что и утилита командной строки.

Информационный API клиента Java

person kporter    schedule 17.01.2016

правильный путь:

 val policy = new ClientPolicy()
 val client = new AerospikeClient(policy, initialHost, port)
 val node = client.getNodes
 val conn=node(0).getConnection(1000) 
 val info= new Info(conn,"bins/users")   
 val buff:Array[Byte]=info.getBuffer
 val buffStr=new String(buff)

buffStr содержит список бинов в пространстве имен пользователей в Aersospike в виде строки

person Nitzanoh    schedule 18.01.2016
comment
Это решение работает для пространства имен, но не для набора, как запросил оператор. +1 за пример пространства имен, не могли бы вы пояснить это в своем ответе? Также следует отметить, что список бинов для пространства имен монотонно растет и сбрасывается только при перезапуске сервера... поэтому эта команда также вернет бины, которые могут больше не использоваться. Хотя это дорого, сканирование пространства имен или набора является наиболее точным методом для получения имен используемых бинов. - person kporter; 19.01.2016