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
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
相关文章推荐
- 终于搞定使用node.js +redis 作为服务端,提供图片上传存储服务
- TWaver html5 + NodeJS + express + websocket.io + redis 快速搭建项目(二)
- 使用git管理nodejs+socket.io+redis+juicer+waterfall+ubuntu+aws ec2开发网站
- node.js 与 redis 与 express 和session协同工作
- node.js的redis模块样例
- centOS下通过NPM安装和配置node.js+socket.io+connect在线聊天的详细教程
- Node.js Redis Expess 开发环境配置及Session实现服务器间共享实例
- 利用Node.JS访问Azure用户角色信息
- 利用Node.JS访问Azure用户角色信息
- Node.JS平台上的数据库Redis,MongoDB,HBASE,MySQL
- TWaver HTML5 + Node.js + express + socket.io + redis(一)
- TWaver HTML5 + Node.js + express + socket.io + redis(六)
- TWaver HTML5 + Node.js + express + socket.io + redis(五)
- 使用html5+nodejs+mongodb+redis进行web游戏开发(一)准备工作
- TWaver HTML5 + Node.js + express + socket.io + redis(五)
- TWaver html5 + NodeJS + express + websocket.io + redis 快速搭建项目(一)
- TWaver HTML5 + Node.js + express + socket.io + redis(四)
- TWaver HTML5 + Node.js + express + socket.io + redis(三)
- node.js在线API: http://www.ostools.net/apidocs/...
- node.js 访问redis数据库,pub/sub