我正在使用Aerospike 3.40.没有出现具有浮点值的Bin.我正在使用python客户端.请帮忙.
服务器本身不支持浮动.它支持整数,字符串,字节,列表和映射.不同的客户端以不同的方式处理不支持的类型.例如,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.
| 归档时间: |
|
| 查看次数: |
651 次 |
| 最近记录: |