2012-05-19 22 views
11

मुझे redis auth का उपयोग करने के लिए redis node.js दस्तावेज़ नहीं मिलता है।नोड.जेएस और रेडिस ऑथ

उदाहरण प्रति

:

var redis = require("redis"), 
client = redis.createClient(); 

// This command is magical. Client stashes the password and will issue on every connect. 
client.auth("somepass"); 

मेरी कोड में मैं निम्नलिखित है:

var redis = require("redis"); 
r = redis.createClient(6379,'xxx.xxx.xxx.xxx'); 
r.auth("yyyyyyyy"); 

app.get('/', function(req, res){ 
r.set("foo", 'bar'); 
res.writeHead(200, {'Content-Type': 'image/gif'}); 
res.end('Hello'); 
}); 

यहाँ त्रुटि है मैं:

Express server listening on port 8070 in development mode 

/home/ubuntu/workspace/rtbopsConfig/rtbServers/rtbNodejsServer/node_modules/redis/index.js:468 
       throw callback_err; 
        ^
Error: Auth error: Error: ERR Client sent AUTH, but no password is set 
    at Command.callback (/home/ubuntu/workspace/rtbopsConfig/rtbServers/rtbNodejsServer/node_modules/redis/index.js:163:43) 
    at RedisClient.return_error (/home/ubuntu/workspace/rtbopsConfig/rtbServers/rtbNodejsServer/node_modules/redis/index.js:464:25) 
    at HiredisReplyParser.<anonymous> (/home/ubuntu/workspace/rtbopsConfig/rtbServers/rtbNodejsServer/node_modules/redis/index.js:253:14) 
    at HiredisReplyParser.emit (events.js:67:17) 
    at HiredisReplyParser.execute (/home/ubuntu/workspace/rtbopsConfig/rtbServers/rtbNodejsServer/node_modules/redis/lib/parser/hiredis.js:41:18) 
    at RedisClient.on_data (/home/ubuntu/workspace/rtbopsConfig/rtbServers/rtbNodejsServer/node_modules/redis/index.js:440:27) 
    at Socket.<anonymous> (/home/ubuntu/workspace/rtbopsConfig/rtbServers/rtbNodejsServer/node_modules/redis/index.js:70:14) 
    at Socket.emit (events.js:67:17) 
    at TCP.onread (net.js:367:14) 
[7]+ Killed     node app.js 8070 


So, what is the proper way to auth? 
+0

EADDRINUSE एक http चीज है - क्या आप वाकई लालसा के साथ एक समस्या है जो आपके सर्वर को स्थापित करने के साथ नहीं है? – ControlAltDel

+0

मैंने त्रुटि संदेश – Tampa

+0

अपडेट किया था, मुझे एक ही समस्या थी, मैंने पाया कि मैंने पासवर्ड की आवश्यकता के लिए किसी अन्य सर्वर पर कॉन्फ़िगरेशन संपादित किया था और सर्वर जो मैं अपने स्टेजिंग सर्वर पर चला रहा था उसमें 'requpass $ uP3rs3cretpassW0rd' नहीं था ... लंगड़ा! लेकिन सब कुछ अब काम करता है। – nak

उत्तर

1

यह करने के लिए सही तरीका क्या है ऑथ का प्रयोग करें।

मुझे विश्वास है कि आप Redis सर्वर के पुराने संस्करण का उपयोग करने का प्रयास कर रहे हैं जिसका प्रोटोकॉल node_redis (या इसके विपरीत) द्वारा समर्थित नहीं है।

वैकल्पिक रूप से, हो सकता है कि आप उस उदाहरण से कनेक्ट न हों जो आपको लगता है कि पासवर्ड सुरक्षित है, या आपने जिस उदाहरण को लक्षित किया है उसके कॉन्फ़िगरेशन में पासवर्ड सेट नहीं किया है।

मेरा सुझाव है कि आप रेडिस-क्ली का उपयोग करके इंस्टेंस से कनेक्ट करने का प्रयास करें और प्रमाणीकरण का परीक्षण करने के लिए ऑथ का उपयोग करें (यानी node.js को छोड़कर)।

+0

हाय, मैं redis2.6 का उपयोग कर रहा हूँ। मैं पीई-रेडिस का भी उपयोग करता हूं जो ऑथ के साथ काम करता है। Auth node.js redis mranney के लिए हर दूसरे ग्राहक की उम्मीद के लिए काम कर रहा है। यहां तक ​​कि tornadoredis काम करता है। – Tampa

+0

यह मेरे लिए ठीक काम करता है। Node.js और संबंधित मॉड्यूल के आपके संस्करण क्या हैं (यानी एनपीएम सूची)? मेरा v0.6.16 [email protected] और [email protected] है ... –

+0

नोड v0.6.18 है। redis [email protected] है – Tampa

0

मैं आपको संदेह है और मैं एक ही समस्या हो रही है से पालन करना चाह सकते हैं के साथ किसी और को मिल गया।

Redis auth error with Node.js and socket.io

इसके बिना

, RedisStore मॉड्यूल RedisClient नहीं पहचानेंगे वस्तुओं आप के रूप में "में गुजर रहे हैं: मैं RedisStore निर्माता के लिए एक विकल्प के रूप में redis मॉड्यूल में ही पारित करके, यहाँ मेरा ठीक करने में कामयाब सच "रेडिस क्लाइंट ऑब्जेक्ट्स (क्योंकि वे से रेडिस से रेडिस क्लाइंट क्लास होंगे।) और रेडिसस्टोर उन्हें फिर से बनाएगा और आपके द्वारा सेट की गई ऑथ खो देगा।

4

रेडिस-सर्वर शुरू करते समय भी इस समस्या का एक और कारण आपके redis.conf को निर्दिष्ट नहीं कर सकता है (यदि आप इसमें "आवश्यकताएँ" डालते हैं)।

उस स्थिति में रेडिस सर्वर डिफ़ॉल्ट कॉन्फ़िगरेशन के साथ शुरू होता है (यानी "आवश्यकता" विकल्प सक्षम किए बिना) और इसलिए आपके AUTH कमांड को स्वीकार नहीं करता है।

./src/redis-server redis.conf