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

Mid*_*der 5 lua largenumber redis

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

require"bc"
bc.mul(...)
bc.mod(...)
Run Code Online (Sandbox Code Playgroud)

但不幸的是,Redis Lua不支持"要求".我发现的唯一方法是将用lua编写的大量库直接插入到脚本中.

我唯一可以得到这样的图书馆:oss.digirati.com.br/luabignum/index.htm

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

更新1:如果我将整个库保存到一个密钥然后访问它,如下所示:

local BigNumLib = KEYS[1];
BigNumLib.BigNum.mul(KEYS[2],KEYS[3]);
Run Code Online (Sandbox Code Playgroud)

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

Pau*_*nko 1

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

local bc = function()
  -- insert the code of BigNum.lua here
  return BigNum
end
bc.mul(....)
Run Code Online (Sandbox Code Playgroud)

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