redis+nodejs实现队列的思路

来源:互联网 发布:淘宝店铺微淘怎么开通 编辑:程序博客网 时间:2024/06/05 19:14
redis里面天然的list链表非常适合做队列,下面看一个简单的nodejs+redis队列的实现过程


   我们需要两个页面 一个index.ejs和一个pop.ejs分别来查看入队和出队的情况


index.ejs代码如下:

<!doctype html><html>    <head>        <title>push页面</title>        <script src="/socket.io/socket.io.js"></script>        <script>            window.onload = function(){                    var iosocket = io.connect();                    iosocket.on('connect',function(){                    iosocket.on('push',function(push){                        var ul = document.getElementsByTagName('ul')[0];                        var li = document.createElement('li');                        li.innerHTML = push;                        ul.appendChild(li);                    })                })            }        </script>    </head>    <body>        <ul>        </ul>    </body></hmtl>



pop.ejs代码如下:

<!doctype html><html>    <head>        <title>pop页面</title>        <script src="/socket.io/socket.io.js"></script>        <script>            window.onload = function(){                    var iosocket = io.connect();                    iosocket.on('connect',function(){                    iosocket.on('pop',function(pop){                        var ul = document.getElementsByTagName('ul')[0];                        var li = document.createElement('li');                        li.innerHTML = pop;                        ul.appendChild(li);                    })                })            }        </script>    </head>    <body>        <ul>        </ul>    </body></hmtl>



下面看下路由方面的控制:

exports.index = function(req, res){  var redis = require('redis').createClient();  redis.auth('chenqiguo');    var date = 'A_'+(new Date()).valueOf();    redis.lpush('list1',date);    iosocket.on('connection',function(socket){       socket.emit('push',date);    })    res.render('index', { title: 'pop',push:date});    };exports.pop = function(req,res){  var redis = require('redis').createClient();  redis.auth('chenqiguo');    redis.rpop('list1',function(err,result){        iosocket.on('connection',function(socket){            socket.emit('pop',result);        })        res.render('pop', { title: 'pop' });    });}


这样一个简单的队列实现思路就出来了,记住一定要在同一个list上面操作 
原创粉丝点击