【问题标题】:How to include third party library when programming Lua script in Redis在 Redis 中编写 Lua 脚本时如何包含第三方库
【发布时间】:2015-07-07 03:05:04
【问题描述】:

我正在使用 Lua 的 Redis 脚本来做一些与金钱相关的模块 (http://redis.io/commands/eval)。不幸的是,Redis Lua 不支持大十进制类型。我通过互联网搜索并找到了一些支持 lua 十进制的库,例如 lmapm。但不幸的是,我不知道如何安装以在 Redis 脚本中使用它。

对于一个一般性的问题,我如何为 Redis 脚本安装第三方库(如 https://github.com/amakawa/ohm.lua),因为 Redis 脚本似乎不了解 Lua 的一些基本功能,如“模块”,并且有一些限制,比如没有全局变量和函数...

请帮我解决这个问题。我搜索了几天,但找不到任何解决方案。非常感谢,我真的很感激!

【问题讨论】:

    标签: lua redis shared-libraries decimal


    【解决方案1】:

    你不能 - Redis 的 Lua 引擎不支持使用外部库。

    解决此问题的唯一方法是重构库并将其转换为可以运行的 Redis 脚本。然后,重构的脚本可以成为脚本的一部分,或者您可以 SCRIPT LOAD 它并使用未记录的功能从脚本中调用它 - 在您的脚本中调用函数 f_sha1 其中 sha1 是库脚本的 sha1 哈希(但请确保您首先SCRIPT LOAD 库脚本)。

    【讨论】:

    • 是的,我也是这么想的。非常感谢您的澄清。
    • 如果它是一个库,代理一个 C 函数怎么办?它不能重构为纯脚本。
    • 是的,但仍然不可能仅使用 Lua。但是,使用 v4 及更高版本,您可以本机调用 C 函数
    猜你喜欢
    • 2017-08-11
    • 2013-10-11
    • 1970-01-01
    • 2016-06-04
    • 2017-04-17
    • 1970-01-01
    • 2013-11-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多