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

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: