mranney / node_redis源代码阅读
来源:互联网 发布:java里的反射 编辑:程序博客网 时间:2024/05/29 10:29
redis - a node.js redis client
mranney / node_redis
This is a complete Redis client for node.js. It supports all Redis commands, including MULTI, WATCH, and PUBLISH/SUBSCRIBE.
node_redis的源代码大概可以分为三个主要部分:
- 经常被使用的util函数,分别是Queue(lib/queue.js), to_array(lib/to_array.js)
queue.js主要是构造一个Queue,发送给redis的命令是放在Queue中的,主要由两种类型的queue,一个是offline_queue;另外一个是command_queue, offline_queue是在连接还没有准备好的情况下发送的命令会存放在这里,那么当连接ready以后,会将其中的command全部发送给redis;command_queue则是没次发送给redis的命令同时也会存放在这里,当返回成功的时候再将command从其中移除出去。
to_array.js则是一个数组的深拷贝,下面是它的源代码:
这里我不想说to_array是如何实现的,因为它很简单,而是想提一下"module.exports = to_array", 通过这种方式exports以后,
我们就可以这样使用它了:
- 用来解析redis返回的数据的parser
parser主要由两种实现,一种是javascript.js(/lib/parser/javascript.js);另外一个是hiredis.js(/lib/parser/hiredis.js),默认使用的javascript.js来解析返回的数据,但是hiredis.js的性能更好些。
JavaScript parser:
hiredis parser:
- 最后出场的当然是核心模块,管理redis命令(保存command、发送command、处理reply)
对index.js的源代码加了一些注释,可以沿着两天主要的线走,一是和redis打交道的接口,看它是如何处理事件 connect, data, end, timeout, drain, error, close的,另外则是和node-redis使用者打交道的接口,看它是如何处理redis命令的。
在node-redis首页里面已经给出了很多关于node-redis的信息,从如何使用它、benchmark测试、事件API、一些特俗的命令的解释(hgetall, hmset)、pub/sub和monitor的介绍、node-redis的一些状态信息和通用回调函数(redis.print)。
需要注意的两个问题:
关于使用node-redis的redis命令接口,传入的参数有三种情况(目前只有mgetall和hmset支持object参数情况):
- 独立的参数
- 数组
- 对象
可以直接调用client.set, client.get (client.REDIS_CMD)来向redis来请求,也可以直接使用client.send_command来向redis请求,功能相同。
- mranney / node_redis源代码阅读
- Nodejs与Redis的交互(mranney/node_redis)入门
- Nodejs学习笔记(九)--- 与Redis的交互(mranney/node_redis)入门
- 阅读源代码
- 源代码阅读
- 阅读源代码
- [转贴]如何阅读源代码
- 费尔防火墙源代码阅读
- OS161 源代码阅读-1
- OS161 源代码阅读-2
- 如何阅读项目源代码
- 怎样阅读源代码
- jflash源代码阅读
- 如何阅读开源代码
- Pentaho源代码阅读报告
- 如何阅读源代码
- 怎样阅读dos源代码?
- 如何阅读源代码
- Jquery 获得服务器控件值的方法小结
- QT安装过程
- 体验某医院的信息化应用
- 解读《每天一个设计模式(命令模式 -2011.4.21 星期四)期待提问和讨论》
- JNDI 是什么
- mranney / node_redis源代码阅读
- Sphider + SCWS,打造完美PHP中文搜索引擎
- 最近学习的困惑以及解决的办法
- WEB安全
- Android常用功能实例
- Android实现widget定时更新
- windows mobile 如何读写XML文档 1
- 平面多边形区域的扫描线填充算法
- Javascript 中 null、NaN和undefined的区别