Nodejs学习笔记(九)--- 与Redis的交互(mranney/node_redis)入门
2015-02-04 15:33
344 查看
目录
简介和安装redis简介
redis安装
redis运行
node_redis安装
连接到redis服务器redis.createClient()
认证 client.auth(password, callback)
单值set和get
client.set(key,value,[callback])
client.get(key,[callback])
client.set([key,value],callback)
多值get和set
client.hmset(hash,obj,[callback])
client.hmset(hash,key1,val1, ... keyn,valn,[callback])
client.hgetall(hash,[callback])
打包执行多个命令[事务]
其它...
简介和安装
redis简介:开源高性能key-value存储;采用内存中(in-memory)数据集的方式,也可以采用磁盘存储方式(前者性能高,但数据可能丢失,后者正好相反)
支持字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)和 有序集合(sorted sets)等;支持对复杂数据结构的高速操作。
特性多,支持主从同步、pub/sub等
支持多种客户端(http://redis.io/clients)
...
注:应用场景没有提到,暂时没有太多实际体会,不瞎说,以免误导人,但是从它的简介和特性来说,起码缓存场景是不错的!
Redis下载地址: https://github.com/dmajkic/redis/downloads
node.js客户端:node_redis https://github.com/mranney/node_redis/
redis安装(Windows平台)
redis非常方便,直接下载解压就可以使用,因为开发环境是win7 64位,直接下载(示例下载的安装包:redis-2.4.5-win32-win64.zip)
redis运行
解压到后运行"64bit"文件夹下的redis-server.exe即可,但是这样运行会出现一个如下警告提示:
#Warning: no config file specified,using the default config. In order to specify a config file use ‘redis-server /path/to/redis.conf’
var redis = require('redis'), RDS_PORT = 6379, //端口号 RDS_HOST = '127.0.1.1', //服务器IP RDS_PWD = 'porschev', //密码 RDS_OPTS = {}, //设置项 client = redis.createClient(RDS_PORT,RDS_HOST,RDS_OPTS); client.auth(RDS_PWD,function(){ console.log('通过认证'); }); client.on('end',function(err){ console.log('end'); }); client.on('connect',function(){ var key = 'skills'; client.sadd(key, 'C#','java',redis.print); client.sadd(key, 'nodejs'); client.sadd(key, "MySQL"); client.multi() .sismember(key,'C#') .smembers(key) .exec(function (err, replies) { console.log("MULTI got " + replies.length + " replies"); replies.forEach(function (reply, index) { console.log("Reply " + index + ": " + reply.toString()); }); client.quit(); }); });
示例源码
官方有个示例,我修改一下,可能更好理解一些,下面一步步说吧!
先了解一下API再看结果
client.multi([commands]):这个标记一个事务的开始,由Multi.exec原子性的执行;github上描述是可以理解为打包,把要执行的命令存放在队列中,redis服务器会原子性的执行所有命令,node_redis接口返回一个Multi对象
Multi.exec( callback ):执行事务内所有命令;github上描述是client.multi()返回一个Multi对象,它包含了所有命令,直到Multi.exec()被调用;
Multi.exec( callback )回调函数参数err:返回null或者Array,出错则返回对应命令序列链中发生错误的错误信息,这个数组中最后一个元素是源自exec本身的一个EXECABORT类型的错误
Multi.exec( callback )回调函数参数results:返回null或者Array,返回命令链中每个命令的返回信息
end:redis已建立的连接被关闭时触发
client.sadd(key,value1,...valuen,[callback]):集合操作,向集合key中添加N个元素,已存在元素的将忽略;redis2.4版本前只能添加一个值
sismember(key,value,[callback]):元素value是否存在于集合key中,存在返回1,不存在返回0
smembers(key,[callback]):返回集合 key 中的所有成员,不存在的集合key也不会报错,而是当作空集返回
client.quit():与之对应的还有一个client.end()方法,相对比较暴力;client.quit方法会接收到所有响应后发送quit命令,而client.end则是直接关闭;都是触发end事件
再看结果应该就比较简单了,client.multi打包了sismember和smembers两个命令,执行exec方法后,回调函数得到两个回应,分别输出两个回应的结果!
其它...
redis.debug_mode:这个在开发中可能有用,大家自行设置试一下,设置为true后,看输出Publish / Subscribe:这个官方示例比较简单清晰,大家运行起来看一下就能理解,深入的网上还有很多用它实现的聊天、监控示例,大家看一下,如果以后觉得有必要就再做个示例分享一下
client.monitor:监控,可能以后会用到,有需要的深入研究一下,入门可以略过
其它redis命令还有不少,能讲到的非常有限,深入练习可以对照:http://redis.readthedocs.org/en/latest/index.html
参数资料:
https://github.com/mranney/node_redis/
http://redis.readthedocs.org/en/latest/index.html
http://dumbee.net/archives/114
相关文章推荐
- Nodejs学习笔记(九)--- 与Redis的交互(mranney/node_redis)入门
- Nodejs与Redis的交互(mranney/node_redis)入门
- Nodejs学习笔记(十)--- 与MongoDB的交互(mongodb/node-mongodb-native)、MongoDB入门
- Nodejs学习笔记(十)--- 与MongoDB的交互(mongodb/node-mongodb-native)、MongoDB入门
- Nodejs学习笔记(十四)— Mongoose介绍和入门 && Nodejs学习笔记(十)--- 与MongoDB的交互(mongodb/node-mongodb-native)、MongoDB入门
- Nodejs学习笔记(四)与MySQL交互(felixge/node-mysql)
- Nodejs学习笔记(四)--- 与MySQL交互(felixge/node-mysql)
- Nodejs学习笔记(四)与MySQL交互(felixge/node-mysql)
- node入门demo-Ajax让前端angularjs/jquery与后台node.js交互,技术支持:mysql+html+angularjs/jquery
- mranney / node_redis源代码阅读
- Flex + blazeds + J2EE 数据交互入门实例教程(图)--开发者联盟:19310171
- Redis入门教程
- AIR2.0入门教程:与Java应用交互
- Flex + blazeds + J2EE 数据交互入门实例教程(图) (转)
- Expression Blend实例中文教程(6) - 项目控件和用户交互控件快速入门
- Expression Blend实例中文教程(6) - 项目控件和用户交互控件快速入门
- redis入门系列文章广告贴
- Ext 介绍入门之 EXT 与json的交互
- node.js入门
- 键值数据库—Redis(一) 基础入门