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

时间:2013-06-25 17:51:39

标签: lua redis largenumber

我需要处理Lua中与Redis一起使用的大量数字。通常你会这样做:

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

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

我能抓住的唯一这样的图书馆:oss.digirati.com.br/luabignum/index.htm

我可以为了具体的脚本而剥离库,但它仍然很大。有没有办法更有效地处理Redis Lua中的大数字?

UPDATE1:如果我将整个库保存到密钥中然后像访问它一样,该怎么办?

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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