gram około z node.js i REDiS i zainstalowane biblioteki hiredis pomocą tego polecenianode.js (Hi) Redis i multi komenda
npm install hiredis redis
Spojrzałem na wielu przykładach tutaj:
https://github.com/mranney/node_redis/blob/master/examples/multi2.js
w wierszu 17 mówi
// you can re-run the same transaction if you like
co oznacza, że int ernal multi.queue obiekt nigdy nie jest usuwany po wykonaniu komend.
Moje pytanie brzmi: jak poradzisz sobie z sytuacją w środowisku http? Na przykład, śledzenie ostatnią podłączonego użytkownika (to naprawdę nie potrzeba wiele, jak to tylko jedno polecenie wykonuje ale jest łatwy do naśladowania)
var http = require('http');
redis = require('redis');
client = redis.createClient()
multi = client.multi();
http.createServer(function (request, response) {
multi.set('lastconnected', request.ip); // won't work, just an example
multi.exec(function(err, replies) {
console.log(replies);
});
});
W tym przypadku byłoby multi.exec wykonać 1 transakcję za pierwszy podłączony użytkownik i 100 transakcji dla setnego użytkownika (ponieważ wewnętrzny obiekt multi.queue nigdy nie jest czyszczony).
Opcja 1: Czy powinienem utworzyć obiekt multi wewnątrz funkcji wywołania zwrotnego http.createServer, co skutecznie zabiłoby go po zakończeniu wykonywania funkcji? Jak kosztowne pod względem cykli procesorów byłoby tworzenie i niszczenie tego obiektu?
Opcja 2: Inną opcją byłoby stworzenie nowej wersji multi.exec(), coś jak multi.execAndClear(), która będzie wyczyścić kolejkę do Redis chwila wykonany że kilka poleceń.
Którą opcję wybrałbyś? Przypuszczam, że opcja 1 jest lepsza - zabijamy jeden obiekt, zamiast czipu, wybierając jego część - chcę tylko mieć pewność, że jestem nowy dla obu węzłów i javascript.
czy możesz wyjaśnić to na przykładzie? –
Ditto na wyjaśnienie. Dokumentacja mówi, że drenuje kolejkę. Biorąc pod uwagę, że możesz ponownie uruchomić komendę i ją powtórzyć, polecenia są bardzo mylące. – maletor