我正在尝试让Redis允许EVAL( http://redis.io/commands/EVAL)发出HTTP请求. 两个模块:LuaCURL和Luasocket提供此功能. Redis源代码有一个带有附加模块的目录(例如cjson)http://download.redis.io/redis-stable/deps/
两个模块:LuaCURL和Luasocket提供此功能. Redis源代码有一个带有附加模块的目录(例如cjson)http://download.redis.io/redis-stable/deps/lua/src/,我尝试添加luacurl.c但是我收到错误后收到错误.我已经设法编译它启用os.execute – 通过编辑scripting.c – 它允许我运行curl命令,但这是一个糟糕的解决方案.
如何在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行并找到
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脚本时,没有其他客户端可以执行命令.