मैं Node.js और redis के साथ चारों ओर खेल रहा हूँ और यह आदेशNode.js, (हाय) 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
जो कि पूर्णांक का तात्पर्य कमांड निष्पादित होने के बाद 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 लेनदेन (क्योंकि आंतरिक बहु.क्यू वस्तु कभी साफ़ नहीं होती है)।
विकल्प 1: मैं http.createServer कॉलबैक फ़ंक्शन, जो effectivly समारोह के निष्पादन के अंत में यह मार डालेंगे अंदर बहु वस्तु बनाना चाहिए? सीपीयू चक्र के मामले में कितना महंगा होगा इस वस्तु को बनाना और नष्ट करना?
विकल्प 2:(), multi.execAndClear की तरह कुछ() जो कतार पल redis साफ हो जाएगा निष्पादित आदेशों की कि गुच्छा अन्य विकल्प multi.exec का एक नया संस्करण बनाने के लिए किया जाएगा।
आप कौन सा विकल्प ले लेंगे? मुझे लगता है कि विकल्प 1 बेहतर है - हम चेरी चुनने के बजाय एक वस्तु को मार रहे हैं - मैं बस यह सुनिश्चित करना चाहता हूं क्योंकि मैं नोड और जावास्क्रिप्ट दोनों के लिए नया ब्रांड हूं।
क्या आप इसे एक उदाहरण के साथ समझा सकते हैं? स्पष्टीकरण पर –
डिट्टो। प्रलेखन का कहना है कि यह कतार को हटा देता है। यह देखते हुए कि आप निष्पादन को दोबारा शुरू कर सकते हैं और इसे दोहराना चाहते हैं कमांड बहुत भ्रमित है। – maletor