我玩弄的Node.js和Redis的,並且通過此命令的Node.js,(III)的Redis和多命令
npm install hiredis redis
我看着多實例安裝在這裏hiredis庫:
https://github.com/mranney/node_redis/blob/master/examples/multi2.js
在第17行,它說
// you can re-run the same transaction if you like
這意味着INT一旦命令執行完成,ernal multi.queue對象就不會被清除。
我的問題是:你將如何處理在HTTP環境情況?例如,跟蹤上次連接的用戶(這並不真正需要的多,因爲它只是一個執行命令,但它很容易跟進)
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);
});
});
在這種情況下,multi.exec將用於第一所連接的執行1個交易用戶和第100個用戶的100個事務(因爲內部multi.queue對象從不清除)。
選項1:我應該在http.createServer回調函數中創建多對象,這會在函數執行結束時有效地終止它嗎?在CPU週期方面是多麼昂貴會創建和銷燬這個對象?
選項2:另一種選擇是創建multi.exec的新版本(),像multi.execAndClear(),它會清除隊列瞬間redis的執行是一堆命令。
你會採取哪一種方式?我想選擇1比較好 - 我們殺一個對象,而不是採摘櫻桃的某些部分 - 我只是想確保我敢全新既節點和JavaScript。
能否請您用一個例子解釋一下嗎? – 2012-05-10 06:32:55