Porównaj ceny domen i usług IT, sprzedawców z całego świata

Instalowanie dodatkowych modułów LUA w Redis


Próbuję przekonać Redis, aby zezwolił na EVAL (

http://redis.io/commands/EVAL
http://redis.io/commands/EVAL) do wysyłania żądań HTTP.
Umożliwiają to dwa moduły: LuaCURL i Luasocket. Kod źródłowy Redis ma katalog z dodatkowymi modułami (np. Cjson)

http://download.redis.io/redis ... /src/
http://download.redis.io/redis ... /src/
Próbowałem dodać luacurl.c, ale po błędzie pojawiał się błąd. Udało mi się to skompilować, włączając os.execute - edytując skrypt script.c - co pozwala mi uruchomić polecenie curl, ale jest to złe rozwiązanie.
Jak kompilować żądania HTTP w Redis Lua?
Prawdopodobnie najłatwiejszym sposobem jest utworzenie osobnego pliku luasocket.so, ale nie jestem pewien, jak to zrobić.
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Nie martw się, potrzebowałem tylko jednej nocy, żeby mieć świeży umysł.
Pobrałem

http://files.luaforge.net/releases/luacurl/luacurl
http://files.luaforge.net/releases/luacurl/luacurl
i przenieś luacurl.c do/deps/lua/src/folder i edytuj wiersz 23 z
#include <lauxlib.h>

do
#include "lauxlib.h"

a następnie w/deps/lua/src/Makefile (Lua makefile, nie Redis) przejdź do linii 30 i znajdź
lua_cjson.o

dodaj „luacurl.o” obok tego w ten sposób
lua_cjson.o luacurl.o

a następnie w/src/Makefile (plik kompilacji Redis, nie Lua) zmień wiersz 54 z
FINAL_LIBS=-lm

do
FINAL_LIBS=-lm -lcurl

Na koniec upewnij się, że zainstalowałeś "yum install curl-devel", a następnie skompiluj go.
Należy pamiętać, że żaden inny klient nie może wykonywać poleceń, gdy serwer jest zajęty skryptami Lua.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Instalowanie niestandardowych modułów Lua w Redis

wymaga ponownej kompilacji Redis ze źródła
http://redis.io/commands/EVAL#comment-755674447
używając procedury takiej jak user3786834. Jeśli naprawdę potrzebujesz użyć konkretnego modułu, może to być jedyny wybór.
Jeśli jednak twoja biblioteka używa tylko kodu Lua (bez kodu C), najprostszą opcją, która również zwiększa przenośność twojej aplikacji, może być włączenie źródła tego modułu bezpośrednio do skryptu EVAL.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się