Установка дополнительных модулей LUA в Redis

Я пытаюсь заставить Redis позволять ОЦЕНКЕ (http://redis.io/commands/EVAL) делать Запросы HTTP.

Два модуля: LuaCURL и Luasocket дают эту способность. Исходный код Redis имеет каталог с дополнительными модулями (такими как cjson) http://download.redis.io/redis-stable/deps/lua/src/, я пытался добавить luacurl.c, но я получил ошибку после ошибки. Мне удалось скомпилировать его включающий os.execute - путем редактирования scripting.c - который позволяет мне выполнять вихревую команду, но это - плохое решение.

Как я компилирую Запросы HTTP в Lua Redis?

По-видимому, самый легкий способ сделать это было бы, чтобы быть иметь автономный luasocket.so файл, но я не уверен, как сделать это.

6
задан 29 June 2014 в 02:32
2 ответа

Не волнуйтесь, все, что мне было нужно - это ночной сон, чтобы иметь свежий ум.

Я скачал http://files.luaforge.net/releases/luacurl/luacurl и передвинул люакюрль. c в папку /deps/lua/src/ и отредактировала строку 23 с

#include <lauxlib.h>

до

#include "lauxlib.h"

а затем в /deps/lua/src/Makefile (makefile Lua, а не Redis) перейдите в строку 30 и найдите

lua_cjson.o

добавить "luacurl.o", расположенный рядом с ним, как

lua_cjson.o luacurl.o

а затем в /src/Makefile (makefile Redis), не Lua) измените строку 54 с

FINAL_LIBS=-lm

на

FINAL_LIBS=-lm -lcurl

Наконец, убедитесь, что вы установили "yum install curl-devel", а затем скомпилируйте ее.

Имейте в виду, что ни один другой клиент не может выполнять команды, пока сервер занят скриптами Lua.

3
ответ дан 3 December 2019 в 00:38

Установка пользовательских модулей Lua в Redis требует перекомпиляции Redis из источника , используя процедуру типа user3786834, изложенную выше. Однако, если ваша библиотека использует только код Lua (без кода на C), то самым простым вариантом, который также увеличивает переносимость вашего приложения, может быть включение исходного кода этого модуля непосредственно в ваш EVAL скрипт.

.
0
ответ дан 3 December 2019 в 00:38

Теги

Похожие вопросы