1

我了解到 Java Client 3.0.33 在客户端支持 Float/Double 数据类型。

发行说明说:在客户端支持双/浮动。服务器会将这些值存储为 long。

这可以。当我向 aerospike bin 插入一个浮点值时,它在 aerospike 服务器中存储为一个长整数。而在使用 Java 客户端取回该值时,它会获得与服务器中保存的一样长的整数。

我希望 Java 客户端应该在检索时将 Long 转换为自动浮动。这在 python 客户端(序列化/反序列化)中完美完成。在使用 Java 客户端时,我必须显式使用 getFloat() 转换回浮点数。

我的问题是我如何知道我需要为哪个 bin 应用 getFloat() 以及我不应该为哪个 bin。因为我从不知道我正在阅读的数据类型是作为浮点数插入的。

提前致谢。

4

2 回答 2

2

使用带有以下代码的 Aerospike Java 客户端 3.1.2。double/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);
于 2015-06-27T01:08:54.213 回答
1

最新的 Aerospike java 客户端(即将发布的 3.1.4)中提供了一种解决方法,以强制客户端始终通过 java 对象序列化/反序列化。它避免了客户端转换为long。示例代码如下。

double value = 22.7;
Bin bin = new Bin("mybin", (Object) value);
于 2015-06-30T08:50:07.090 回答