您的位置:首页 > 数据库 > Redis

node.js + redis 在线用户计数

2014-06-23 15:05 316 查看
1:安装redis(下载安装,这里不介绍了,以前博客里有)

2: 启用redis-server.exe

转载自:http://expressjs.jser.us/guide.html

接下来你需要你创建一个应用程序,和一个redis连接:

var express = require('express');

var redis = require('redis');

var db = redis.createClient();

var app = express();

接下来是纪录用户在线的中间件。 这里我们使用sorted sets, 它的一个好处是我们可以查询最近N毫秒内在线的用户。 我们通过传入一个时间戳来当作成员的"score"。 注意我们使用 User-Agent 作为一个标识用户的id。

app.use(function(req, res, next){

  var ua = req.headers['user-agent'];

  db.zadd('online', Date.now(), ua, next);

});

下一个中间件是通过zrevrangebyscore来查询上一分钟在线用户。 我们将能得到从当前时间算起在60,000毫秒内活跃的用户。

app.use(function(req, res, next){

  var min = 60 * 1000;

  var ago = Date.now() - min;

  db.zrevrangebyscore('online', '+inf', ago, function(err, users){

    if (err) return next(err);

    req.online = users;

    next();

  });

});

最后我们来使用它,绑定到一个端口!这些就是这个程序的一切了,在不同的浏览器里访问这个应用程序,你会看到计数的增长。

app.get('/', function(req, res){

  res.send(req.online.length + ' users online');

});

app.listen(3000);

转载自:http://expressjs.jser.us/guide.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: