如何在Aerospike KV商店中插入浮点数?

Car*_*ock 5 aerospike

我正在使用Aerospike 3.40.没有出现具有浮点值的Bin.我正在使用python客户端.请帮忙.

Haf*_*sif 6

它现在支持Aerospike 3.6版本


Ron*_*zer 5

服务器本身不支持浮动.它支持整数,字符串,字节,列表和映射.不同的客户端以不同的方式处理不支持的类型.例如,PHP客户端将序列化其他类型(如boolean和float)并将它们存储在bytes字段中,然后在读取时对它们进行反序列化.Python客户端将从下一个版本开始(> = 1.0.38).

但是,这种方法的局限性在于不同的客户端(例如PHP和Python)难以读取这样的序列化数据,因为它没有使用通用格式进行序列化.

使用浮点数解决此问题的一种常见方法是将它们转换为整数.例如,如果你有一个名为'currency'的bin,你可以将float乘以100,砍掉尾数,并将其存储为整数.在出路上你只需要除以100.类似的方法是将有效数字存储在一个bin中,将尾数存储在另一个bin中,两者都是整数类型,并在读取时重新组合它们.因此123.456789存储为v_sig和v_mantissa.

(v_sig, v_mantissa) = str(123.456789).split('.')
Run Code Online (Sandbox Code Playgroud)

在阅读时你会把两者结合起来

v = float(v_sig)+float("0."+str(v_mantissa))
Run Code Online (Sandbox Code Playgroud)

仅供参考,浮动现在支持本身为aerospike服务器版本> = 3.6.0的双倍.大多数客户端(例如Python和PHP)都支持将浮点数转换为as_double.

  • 好的,我推出了一个新的Python aerospike 1.0.40版本,现在将自动处理不支持的类型,如浮动.请参阅发行说明(https://github.com/aerospike/aerospike-client-python/releases/tag/1.0.40)并亲自试用. (3认同)