坑爹的express session api 和 YUI EXPRESS的页面doctype

注:本文系COPY拼接加自创而来!
redis是类似于memcached的高性能键值缓存工具,但它支持更多的值类型、功能更加丰富,且可以将存储内容定时持久化到磁盘中,是NoSQL家庭中出色的一员。NoSQL中另外一个重要成员便是MongoDB。

先介绍下redis的安装:

1、首先安装redis,具体安装方法见redis官网:http://code.google.com/p/redis/

2、安装并启动redis后,可以使用redis的命令条进行简单的测试

3、安装node.js的redis模块,建议先讲npm程序更新至最新版本,npm更新地址:https://github.com/isaacs/npm,

安装redis的node.js模块,url:https://github.com/simplegeo/nodejs-redis <–这里有详细的使用说明

再贴一个redis完全中文命令手册地址,翻译的很好,看起来很轻松:http://readthedocs.org/docs/redis/en/latest/index.html

4、最后提供一个简单的例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
    var redis = require("redis"),
client = redis.createClient(); //这里可以多开几个redis的链接,类似进程池的概念

client.on("error", function (err) {
console.log("Error " + err);
});

client.set("string key", "string val", redis.print);
client.hset("hash key", "hashtest 1", "some value", redis.print);
client.hset(["hash key", "hashtest 2", "some other value"], redis.print);
client.hkeys("hash key", function (err, replies) {
console.log(replies.length + " replies:");
replies.forEach(function (reply, i) {
console.log(" " + i + ": " + reply);
});
client.quit();
});

This will display:

mjr:~/work/node_redis (master)$ node example.js
Reply: OK
Reply: 0
Reply: 0
2 replies:
0: hashtest 1
1: hashtest 2

目前我利用node.js+yui+express+redis开发了一个带头像功能聊天室,边上截图边介绍把!

r1

1.登录页面,由于是一个小demo,所以没有用户概念,只需要输入一个用户名就可以登录了。

亮点:这里我实现了不利用FLASH,做到文件上传进度条,真实的进度条,有500毫秒的延迟。

r2

2.登录进去以后的群聊天图片,左下角蓝色的群字代表有群消息未读取。左边大框是所有人可见的
亮点:可以自定义群组,并且带消息提醒,IE8用户也是可用的哦!

r3

3.这是私聊的截图,可以点击右边人物头像和名字打开私聊窗口进行私聊。

r4

4.这是创建群的截图,成员列表会在群窗口罗列出来,方便点击移动到下面添加列表中

本套聊天室系统前端就不多介绍了,利用comet技术,每60秒左右进行一次轮询,如果有新信息则会马上响应。会根据响应更新成员列表、群列表和聊天信息。

本套聊天室后端使用node.js搭建,利用yui+express的框架二次开发成MVC框架,将一些功能模块抽象出来。

YUI+EXPRESS可以做很多事情。类似php smarty的功能YUI也能胜任。

用户的登入登出则直接操作redis的用户KEY和群KEY,聊天内容则定时对redis进行存储,在转存过程中有一个写入缓冲,用来记录转存时用户的聊天信息。为redis开了2个连接,一个连接专门用来处理用户key和群key,一个连接专门用来转存聊天消息。

来个图片直观点:

r5