Redis简介Redis是一个高性能的key-value数据库。Redis在内存中存储数据,在磁盘中记录数据变化。因为数据存储在内存中,所以数据操作非常快。安装以windows环境为例,首先下载windows版本的redis,地址如下:3.2.100下载完成后解压,我这里解压到D:redis目录启动服务打开一个cmd窗口,进入到D:redis目录,运行redis-server.exeredis.windows.conf。当出现如上界面时,redis已经在本地6379端口启动了服务,接下来就可以使用客户端连接redis服务器了。在node中使用redis首先安装驱动:npminstallredisRedis支持多种数据类型,常用的有键/值对、哈希表、链表、集合等。普通数据先来看看如何存储和检索键/值对。varredis=require('redis')varclient=redis.createClient(6379,'127.0.0.1')client.on('error',function(err){console.log('Error'+err);});//1个键值对client.set('color','red',redis.print);client.get('color',function(err,value){if(err)throwerr;console.log('Got:'+value)client.quit();})运行,结果如下HashtableHashtable有点类似于ES6中的Map。client.hmset('kitty',{'age':'2岁','sex':'男'},redis.print);client.hget('kitty','age',function(err,value){if(err)throwerr;console.log('kittyis'+value);});client.hkeys('kitty',function(err,keys){if(err)throwerr;键。forEach(function(key,i){console.log(key,i);});client.quit();});运行,结果如下:linkedlistRedis链表类似于JS数组,lpush给链表加值,lrange获取参数start和end范围内的链表元素,参数end为-1,表示链表中的最后一个元素。注意:随着链表长度的增长,数据获取会逐渐变慢(大O表示法O(n))client.lpush('tasks','Paintthehousered.',redis.print);client.lpush('tasks','Paintthehousegreen.',redis.print);client.lrange('tasks',0,-1,function(err,items){if(err)throwerr;items.forEach(function(item,i){console.log(''+item);});client.quit();});运行,结果如下:集合类似于JS中的Set,集合中的元素必须是唯一的,其性能:O(1)inbigOnotationclient.sadd('ip','192.168.3.7',redis.print);client.sadd('ip','192.168.3.7',redis.print);client.sadd('ip','192.168.3.9',redis.print);client.smembers('ip',function(err,members){if(err)throwerr;console.log(members);client.quit();});运行,结果如下:channelRedis超越了传统的数据存储职责,它还提供了channels,这是一种数据传输机制,提供发布/订阅功能。varredis=require('redis')varclientA=redis.createClient(6379,'127.0.0.1')varclientB=redis.createClient(6379,'127.0.0.1')clientA.on('message',function(channel),message){console.log('ClientA从通道%s收到消息:%s',channel,message);});clientA.on('subscribe',function(channel,count){clientB.publish('main_chat_room','Helloworld!');});clientA.subscribe('main_chat_room');上面代码中,clientA订阅main_chat_room,然后clientA捕获订阅事件,执行回调函数,clientB发送消息给main_chat_roomHelloworld!clientA收到信息后,在控制台打印出相关信息。运行,结果如下:总结本文只是对Redis的一个基本介绍。更多信息可以参考:redis文档node_redisRedis实战Redis开发运维
