Redis
 sql >> डेटाबेस >  >> NoSQL >> Redis

डेटा मान बदलते समय क्लाइंट को सूचित करने के लिए नोडज के साथ रेडिस पब्लिश/सब्सक्राइब का उपयोग कैसे करें?

पुराने केवल संदर्भ का उपयोग करें

निर्भरता

एक्सप्रेस, socket.io, node_redis और अंतिम लेकिन कम से कम मीडिया आग से नमूना कोड का उपयोग नहीं करता है।

नोड.js+npm (नॉन रूट के रूप में) इंस्टॉल करें

सबसे पहले आपको (यदि आपने इसे अभी तक नहीं किया है) 30 सेकंड में node.js+npm इंस्टॉल करना चाहिए (सही तरीका क्योंकि आपको नहीं करना चाहिए npm को रूट . के रूप में चलाएं ):

echo 'export PATH=$HOME/local/bin:$PATH' >> ~/.bashrc
. ~/.bashrc
mkdir ~/local
mkdir ~/node-latest-install
cd ~/node-latest-install
curl http://nodejs.org/dist/node-latest.tar.gz | tar xz --strip-components=1
./configure --prefix=~/local
make install # ok, fine, this step probably takes more than 30 seconds...
curl http://npmjs.org/install.sh | sh

निर्भरता स्थापित करें

नोड + एनपीएम स्थापित करने के बाद आपको जारी करके निर्भरताएं स्थापित करनी चाहिए:

npm install express
npm install socket.io
npm install hiredis redis # hiredis to use c binding for redis => FAST :)

नमूना डाउनलोड करें

आप Mediafire से पूरा नमूना डाउनलोड कर सकते हैं।

पैकेज खोलना

unzip pbsb.zip # can also do via graphical interface if you prefer.

ज़िप के अंदर क्या है

./app.js

const PORT = 3000;
const HOST = 'localhost';

var express = require('express');

var app = module.exports = express.createServer();

app.use(express.staticProvider(__dirname + '/public'));

const redis = require('redis');
const client = redis.createClient();

const io = require('socket.io');

if (!module.parent) {
    app.listen(PORT, HOST);
    console.log("Express server listening on port %d", app.address().port)

    const socket  = io.listen(app);

    socket.on('connection', function(client) {
        const subscribe = redis.createClient();
        subscribe.subscribe('pubsub'); //    listen to messages from channel pubsub

        subscribe.on("message", function(channel, message) {
            client.send(message);
        });

        client.on('message', function(msg) {
        });

        client.on('disconnect', function() {
            subscribe.quit();
        });
    });
}

./public/index.html

<html>
<head>
    <title>PubSub</title>
    <script src="/socket.io/socket.io.js"></script>
    <script src="/javascripts/jquery-1.4.3.min.js"></script>
</head>
<body>
    <div id="content"></div>
    <script>    
        $(document).ready(function() {
            var socket = new io.Socket('localhost', {port: 3000, rememberTransport: false/*, transports: ['xhr-polling']*/});
            var content = $('#content');

            socket.on('connect', function() {
            });

            socket.on('message', function(message){
                content.prepend(message + '<br />');
            }) ;

            socket.on('disconnect', function() {
                console.log('disconnected');
                content.html("<b>Disconnected!</b>");
            });

            socket.connect();
        });
    </script>
</body>
</html>

सर्वर प्रारंभ करें

cd pbsb    
node app.js

ब्राउज़र प्रारंभ करें

सबसे अच्छा यदि आप Google क्रोम शुरू करते हैं (वेबसोकेट समर्थन के कारण, लेकिन आवश्यक नहीं)। http://localhost:3000 पर जाएं नमूना देखने के लिए (शुरुआत में आपको PubSub . के अलावा कुछ नहीं दिखता शीर्षक के रूप में)।

लेकिन publish on पर चैनल के लिए pubsub आपको एक संदेश देखना चाहिए। नीचे हम प्रकाशित करते हैं "Hello world!" ब्राउज़र के लिए।

./redis-cli से

publish pubsub "Hello world!"


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Redis क्या mset का उपयोग करके कई hset कुंजियों (फ़ील्ड नहीं) को अपडेट करना संभव है

  2. स्पार्क पर रेडिस:कार्य क्रमबद्ध नहीं है

  3. नोड जेएस के साथ रेडिस कॉन्फिग सेट

  4. अपने स्वयं के Azure खाते लाएं - स्केलग्रिड पर MongoDB® और Redis™ के लिए होस्टिंग

  5. अजवाइन/रेडिस एक ही कार्य को समानांतर में कई बार निष्पादित किया जा रहा है