【问题标题】:How to increment float values with Aerospike PHP client如何使用 Aerospike PHP 客户端增加浮点值
【发布时间】:2016-07-05 08:37:50
【问题描述】:

如何使用 AeroSpike 的 PHP 客户端增加浮点值?放置浮点值可以正常工作,但增量明显会破坏 php 进程并返回 nginx 错误网关。 我使用的代码:

    $key = $db->initKey("test", "queries", 'bench');
    $p = array('a' => 2.3);
    $db->put($key, $p);              // works fine
    $db->increment($key, 'a', 4.2);  // php process crashes at this point

【问题讨论】:

  • According to the docs,增量值应该是整数。你通过一个花车。我认为您不能使用浮点值递增。
  • 我建议使用aerospike/aerospike-client-php 提出问题通常是可行的方法。这是一个合法的请求,但你不能在 stackoverflow 中描述无法接收的错误或功能。

标签: php aerospike


【解决方案1】:

我们的一个生产应用程序在使用 Aerospike Java 客户端作为编写器并使用 PHP 客户端作为读取器时也遇到了同样的问题。我们通过将 double 转换为 12 位刻度并删除句点来将我们的货币 double 存储为 long int 来解决这个问题。例如 $1.2345 将作为 1234500000000 存储在 bin 值中。这允许我们将增量多操作发送到 Aerospike。

当 PHP 客户端将存储值读取到我们的数据库服务器以进行报告时,我们会将 64 位 int 转换回带 12 位数字的双精度值。 1234500000000 -> 1.2345 美元。

【讨论】:

  • 由于 Aerospike 规范的当前状态(截至本评论发布之日)并未表明未来对浮点增量的任何支持,因此您的答案是解决此问题的最佳方法。感谢您分享您的经验。
猜你喜欢
  • 1970-01-01
  • 2020-10-01
  • 2017-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多