Vraag Aanvullende LUA-modules installeren in Redis


Ik probeer Redis EVAL te laten accepteren (http://redis.io/commands/EVAL) om HTTP-verzoeken te maken.

Twee modules: LuaCURL en Luasocket geven deze mogelijkheid. De Redis-broncode heeft een map met extra modules (zoals cjson) http://download.redis.io/redis-stable/deps/lua/src/, Ik heb geprobeerd om luacurl.c toe te voegen, maar ik kreeg fout na fout. Ik heb het kunnen compileren waardoor os.execute - door scripting.c te bewerken - waarmee ik de curl-opdracht kan uitvoeren, maar dat is een slechte oplossing.

Hoe compileer ik HTTP-verzoeken in Redis Lua?

Waarschijnlijk zou de gemakkelijkste manier om dit te doen een stand-alone luasocket.so-bestand zijn, maar ik weet niet zeker hoe dat moet.


6
2018-06-28 23:32


oorsprong




antwoorden:


Geen zorgen, alles wat ik nodig had, was een nachtrust om een ​​frisse geest te hebben.

ik heb gedownload http://files.luaforge.net/releases/luacurl/luacurl en verplaats de luacurl.c naar de map / deps / lua / src / en bewerkte regel 23 vanaf

#include <lauxlib.h>

naar

#include "lauxlib.h"

en dan in / deps / lua / src / Makefile (Lua's makefile, niet Redis's) ga naar regel 30 en vind

lua_cjson.o

voeg "luacurl.o" naast het toe zoals zo

lua_cjson.o luacurl.o

en vervolgens in / src / Makefile (Redis's makefile, niet Lua's) regel 54 wijzigen van

FINAL_LIBS=-lm

naar

FINAL_LIBS=-lm -lcurl

Zorg er ten slotte voor dat u "yum install curl-devel" hebt geïnstalleerd en compileer deze.

Houd er rekening mee dat geen enkele andere client opdrachten kan uitvoeren terwijl de server bezig is met Lua-scripts.


2
2018-06-29 17:29





Aangepaste Lua-modules installeren in Redis vereist het opnieuw compileren van Redis van de bron, met behulp van een procedure zoals user3786834 opgemaakt. Als je echt een bepaalde module moet gebruiken, is dat misschien je enige keuze.

Als uw bibliotheek echter alleen Lua-code (geen C-code) gebruikt, is de eenvoudigste optie, die ook de portabiliteit van uw toepassing verhoogt, mogelijk dat de broncode van die module rechtstreeks in uw EVAL-script wordt opgenomen.


0
2018-03-08 11:00