将其他LUA模块安装到Redis中

我试图让Redis允许EVAL( http://redis.io/commands/EVAL )发出HTTP请求。

两个模块:LuaCURL和Luasocket提供这个function。 Redis源代码有一个包含额外模块(如cjson)的目录http://download.redis.io/redis-stable/deps/lua/src/ ,我尝试添加luacurl.c,但是我收到错误后出错。 我已经设法编译启用os.execute – 通过编辑scripting.c – 它允许我运行curl命令,但这是一个不好的解决scheme。

如何在Redis的Lua中编译HTTP请求?

大概最简单的方法是做一个独立的luasocket.so文件,但我不知道该怎么做。

不用担心,我所需要的只是夜间睡眠,以保持清醒的头脑。

我下载了http://files.luaforge.net/releases/luacurl/luacurl ,并将luacurl.c移动到/ deps / lua / src /文件夹中,并从第23行

#include <lauxlib.h> 

 #include "lauxlib.h" 

然后在/ deps / lua / src / Makefile(Lua的makefile,不是Redis的)到第30行find

 lua_cjson.o 

在它旁边加上“luacurl.o”就像这样

 lua_cjson.o luacurl.o 

然后在/ src / Makefile(Redis的makefile,不是Lua的)从第54行改为

 FINAL_LIBS=-lm 

 FINAL_LIBS=-lm -lcurl 

最后,确保你已经安装了“yum install curl-devel”然后编译它。

请记住,当服务器忙于使用Lua脚本时,没有其他客户端可以执行命令。

在Redis中安装自定义Lua模块需要使用像user3786834这样的过程来重新编译源代码中的Redis。 如果你真的需要使用某个特定的模块,那可能是你唯一的select。

但是,如果您的库只使用Lua代码(无C代码),那么最简单的选项也可以增加应用程序的可移植性,可能是将该模块的源代码直接包含到您的EVAL脚本中。