我需要在 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/