Sto giocando intorno con node.js e Redis e installato la libreria hiredis tramite questo comandoNode.js, (Hi) Redis e il comando a più
npm install hiredis redis
ho guardato il multi esempi qui:
https://github.com/mranney/node_redis/blob/master/examples/multi2.js
alla linea 17 si dice
// you can re-run the same transaction if you like
il che implica che l'int L'oggetto ernale multi.queue non viene mai cancellato una volta che i comandi hanno terminato l'esecuzione.
La mia domanda è: come gestireste la situazione in un ambiente http? Per esempio, il monitoraggio l'ultimo utente connesso (questo non ha realmente bisogno più come solo esegue un comando, ma è facile da seguire)
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);
});
});
In questo caso, sarebbe multi.exec eseguire 1 transazione per la prima collegato utente e 100 transazioni per il 100 ° utente (poiché l'oggetto multi.queue interno non viene mai cancellato).
Opzione 1: Devo creare il multi oggetto all'interno della funzione di callback http.createServer, che lo ucciderebbe efficacemente alla fine dell'esecuzione della funzione? Quanto sarebbero costosi in termini di cicli di CPU la creazione e la distruzione di questo oggetto?
Opzione 2: L'altra opzione sarebbe quella di creare una nuova versione di multi.exec(), qualcosa come multi.execAndClear(), che cancellerà la coda le Redis momento eseguito che gruppo di comandi.
Quale opzione daresti? Suppongo che l'opzione 1 sia migliore - stiamo uccidendo un oggetto invece di parti di cherry picking - voglio solo essere sicuro di essere nuovo di zecca sia per i nodi che per i javascript.
puoi spiegare questo con un esempio? –
Idem sulla spiegazione. La documentazione dice che drena la coda. Dato che è possibile rieseguire l'exec e farlo ripetere i comandi è molto confuso. – maletor