2015-06-26 1 views
1

Я узнал, что Java Client 3.0.33 поддерживает Float/Double тип данных на стороне клиента.

В примечаниях к выпуску говорится: Поддержка двойного/плавающего на стороне клиента. Сервер будет хранить эти значения в виде длин.

Это прекрасно. Когда я вставляю значение float в аэрокосмический отсек, он хранится как длинное целое число на аэросик-сервере. Принимая во внимание, что, возвращая значение обратно с помощью Java Client, он получает как длинное целое число, сохраненное на сервере.

Ожидается, что Java-клиент должен был преобразовать Long для автоматического плавания при поиске. Это прекрасно сделано в клиенте python (serialize/deserialize). Мне нужно явно использовать getFloat() для преобразования обратно в float при использовании Java Client.

Мой вопрос: как узнать, для какого бункера мне нужно применить getFloat(), и для которого я не должен. Потому что я никогда не знаю, какой тип данных, который я читаю, был вставлен как float.

Спасибо заранее.Обработка Float/Double datatypes с использованием клиента Aerospike Java

+0

Выглядит очень искренняя проблема для меня. – sunil

ответ

2

Используйте клиент Aerospike Java 3.1.2 со следующим кодом. Двойной/float хранится как сериализованный Java-тип, но пока вы пишете и читаете с Jave, все будет в порядке.

Key key = new Key("test", "some-floats", "float-001"); 
Bin bin = new Bin("a-float", 3.14159f); 
this.client.put(null, key, bin); 
Record record = this.client.get(null, key, "a-float"); 
double pi = record.getFloat("a-float"); 
System.out.println("Float:"+pi); 
+0

@ Helipilot50, я упомянул об использовании getFloat() в моем вопросе. Моя проблема в том, что я не хочу явно использовать getFloat при поиске. Клиент Python делает это для меня. – Carbonrock

1

Обходной дается в последней версии клиента Aerospike Java (3.1.4, который собирается быть отпущена), чтобы заставить клиента всегда идти через объект Java сериализации/десериализации. Это позволяет избежать длительного обращения клиента. Пример кода приведен ниже.

double value = 22.7; 
Bin bin = new Bin("mybin", (Object) value); 
+0

@ sunil, я жду этого релиза. - Благодаря. – Carbonrock