lua - 在 Redis Lua 中精确处理大量数字

标签 lua redis largenumber

我需要在 Redis 附带的 Lua 中处理大量数据。通常你会这样做:

require"bc"
bc.mul(...)
bc.mod(...)

等 但不幸的是,Redis Lua 不支持“require”。我发现的唯一方法是将一个用 lua 本身编写的大数字库直接插入到脚本中。

我唯一可以获得的此类库:oss.digirati.com.br/luabignum/index.htm

我可以出于具体脚本的目的剥离库,但它仍然很大。有什么方法可以更有效地处理 Redis Lua 中的大量数据?

UPDATE1:如果我将整个库保存到一个 key 中然后访问它会怎样:

local BigNumLib = KEYS[1];
BigNumLib.BigNum.mul(KEYS[2],KEYS[3]);

我不确定语法,也许我需要将所有库包含在一个 lua 表 {} 中。

最佳答案

我不熟悉 Redis 如何处理 Lua 代码,但为什么将库本身插入到您的代码中是个问题?你应该能够做这样的事情:

local bc = function()
  -- insert the code of BigNum.lua here
  return BigNum
end
bc.mul(....)

代码可能是在Lua 5.1之前写的,所以我不知道是否有任何兼容性问题,但这至少应该给你一个开始。

关于lua - 在 Redis Lua 中精确处理大量数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17304179/

相关文章:

mysql - 如何使用lua连接主机上的MYSQL

algorithm - 在lua中生成TTT博弈树

Lua 中的函数

scala - 发布/订阅中的 Redis 插件阻塞

java - 如何使用 Redis 和 Flask 连接 Storm 和 D3.js?

memory-management - 为什么 Redis 内存碎片小于 1

c++ - 在 C++ 中处理非常大的整数

c - 在嵌入式环境中缩放值的高效程序

java - 将 Spark RDD 大小设置为 :Casting long to Double inside 10^9+ for loop, 真的是个坏主意吗?

c++ - 如何在 Lua 5.3 中注册 C++ 类和函数