Instalando módulos LUA adicionais no Redis

6

Estou tentando fazer com que o Redis permita que o EVAL ( link ) faça solicitações HTTP.

Dois módulos: LuaCURL e Luasocket dão essa capacidade. O código-fonte Redis tem um diretório com módulos adicionais (como cjson) link , eu tentei adicionando luacurl.c mas eu recebi erro após erro. Eu consegui compilá-lo permitindo os.execute - editando scripting.c - que me permite executar o comando curl, mas isso é uma má solução.

Como faço para compilar solicitações HTTP no Lua do Redis?

Presumivelmente, a maneira mais fácil de fazer isso seria ter um arquivo luasocket.so independente, mas não sei como fazer isso.

    
por user3786834 29.06.2014 / 01:32

2 respostas

2

Não se preocupe, tudo o que eu precisava era de uma noite de sono para ter uma mente fresca.

Eu baixei o link e movi o luacurl.c para a pasta / deps / lua / src / e editei linha 23 de

#include <lauxlib.h>

para

#include "lauxlib.h"

e depois em / deps / lua / src / Makefile (o makefile de Lua, não o de Redis), vá para a linha 30 e encontre

lua_cjson.o

adicione "luacurl.o" espaçado ao lado como assim

lua_cjson.o luacurl.o

e depois em / src / Makefile (makefile de Redis, não de Lua), mude a linha 54 de

FINAL_LIBS=-lm

para

FINAL_LIBS=-lm -lcurl

Por fim, certifique-se de ter instalado o "yum install curl-devel" e, em seguida, compile-o.

Tenha em mente que nenhum outro cliente pode executar comandos enquanto o servidor estiver ocupado com scripts Lua.

    
por 29.06.2014 / 19:29
0

A instalação de módulos Lua personalizados no Redis requer a recompilação do Redis a partir da fonte , usando um procedimento como o user3786834. Se você realmente precisa usar algum módulo em particular, essa pode ser sua única opção.

No entanto, se sua biblioteca usa apenas código Lua (sem código C), a opção mais simples, que também aumenta a portabilidade do seu aplicativo, pode ser incluir o código-fonte do módulo diretamente no seu script EVAL.

    
por 08.03.2016 / 12:00

Tags