在Redis Lua中精确地处理大数字。

我需要在与Redis配合使用时在Lua中处理大数。通常,您会这样做:

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

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

我唯一能找到的这种库:oss.digirati.com.br/luabignum/index.htm

为了实现具体的脚本,我可以削减掉这个库的部分,但它仍然很庞大。有没有更有效地处理Redis Lua中的大数的方法?

更新1:如果我将整个库保存到一个键中,然后像这样访问它会怎样:

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

我不确定语法,也许我需要将整个库包含在Lua表{}中。

点赞
用户1442917
用户1442917

我对 Redis 如何处理 Lua 代码不熟悉,但是为什么将库本身插入代码会成为问题呢?您应该可以像这样做:

local bc = function()
  -- 在这里插入 BigNum.lua 的代码
  return BigNum
end
bc.mul(....)

这段代码可能是在 Lua 5.1 之前编写的,所以我不知道是否存在任何兼容性问题,但这应该至少可以给您一个起点。

2013-06-25 22:24:30