文章翻译:Node.js和Redis入门-安装与命令

原文标题:Node.js and Redis tutorial – Installation and commands
作者:Shahid (UnixRoot) Shaikh
翻译:治电小白菜
原文地址:https://codeforgeek.com/2016/06/node-js-redis-tutorial-installation-commands/
译者注:发现这篇文章很棒,所以就翻译了,能力有限,有错误可以指出。
我的学习代码:https://github.com/klren0312/node_redis_study

Redis是一个高性能的内存数据库,用作数据结构存储。Redis支持hash,string,lists和其他复杂的数据结构,并且能保持很高的性能。

Nodejs中,Redis可以被用来解决各种各样的问题,比如缓存服务器或者信息代理。在这个入门里,我们将介绍nodejs中受欢迎以及有用的Redis命令。

在我们开始前,让我们来看看Redis在不同平台上的安装。

安装Redis

在MAC和Linux上安装Redis,你可以手动安装,像这里介绍的一样,或者你可以很懒像我一样,试用这些命令来安装它

Ubuntu

sudo apt-get install redis-server

Mac 上使用 brew

brew install redis

Window没有Redis团队的官方安装包,但是这儿有一些你可以用在你机子上的可用端口(译者注:https://github.com/MicrosoftArchive/redis
在安装之后,你可以使用下面的命令来启动Redis服务

redis-server

你应该会看到下面的画面



要进入Redis命令行,要单独在另一个命令行框中(上面的命令行框不要关),输入下面的命令

redis-cli

你应该能看到下面的画面


尝试去运行“PING”命令,你应该可以接收到“PONG"命令


配置Nodejs和Redis

NodeRedis是非常流行和高性能的Node.js Redis客户端。它几乎以很高性能地支持Redis的每一个语法。

用下面命令,来使你的项目支持NodeRedis

npm i --S redis

要在Node.js中使用它,你需要创建一个Redis客户端。这里是一个代码片段。

var redis = require('redis');
var redisClient = redis.createClient({host : 'localhost', port : 6379});

redisClient.on('ready',function() {
 console.log("Redis is ready");
});

redisClient.on('error',function() {
 console.log("Error in Redis");
});

将上面的代码保存到名为app.js的文件中,以及使用下面的命令来运行它

node app.js

如果Redis是开启的以及在运行,你应该可以看到下面的画面



如果你想要加入更多有关Redis连接的配置参数,这儿由一个支持的列表

Redis的身份验证

这只有当你的Redis服务需要通过认证被保护的时候需要。你必须在连接上Redis使用下面的语法来验证身份:

redisClient.auth('password', function(err,reply){
    console.log(reply);
});

保存键值对数据到Redis

我们建立了Node.js和Redis连接,以及相互通信,让我们来保存一些数据进去。就像我们在文章开头提到的,Redis通过键值对来对数据进行存储。让我们来看下他们吧:

存储字符串

可以使用下面的命令来保存一个简单的字符传

redisClient.set("language","nodejs")

在这里"language"是键,"nodejs"是值。在这个命令运行之后,你可以通过下面的命令,在Redis中查看

GET language

回调是可以配置的,如果你想要收到命令的结果,你可以像下面一样,提供一个回调

redisClient.set("language","nodejs",function(err,reply){
    cnosole.log(err);
    console.log(reply);
})

在检索键值时,你也可以运行Redis GET命令,带上回调或者不带

redisClient.get("language",function(err,reply){
    console.log(err);
    console.log(reply);
})

存储对象(Hash)

如果你想要存储像下面这些的数据

{
 "webserver" : "expressjs",
 "database" : "mongoDB",
 "devops" : "jenkins"
}

Redis支持存储他们在一个快照(键)中,而不是存储位字符串对。我们可以使用hmset()命令来将这样的hash存入Redis中。

redisClient.hmset("tools","webserver","expressjs","database","mongoDB","devops","jenkins",function(er$
 console.log(err);
 console.log(reply);
});

redisClient.hgetall("tools",function(err,reply) {
 console.log(err);
 console.log(reply);
});

存储List和Set

你也可以存储像List和Set一样复杂的数据结构。在Set和List中唯一不同的时,List可以存储重复的字段而Set不能。
下面是相关代码。第一个参数是Set和List的名称

redisClient.rpush(["languages","angularjs","nodejs","go"],function(err,reply) {
 console.log(err);
 console.log(reply);
});

redisClient.sadd(["devopstools","jenkins","codeship","jenkins"],function(err,reply) {
 console.log(err);
 console.log(reply);
});

下面是输出结果

null
3//List数据个数
null
2//set数据个数

可以看到Set中,存入的数据个数是3,但是我们实际看到的是2,因为由2个Jenkins的值是重复的,被过滤了。

操作键值对

在存储了键值后,Redis还允许你处理它们,比如删除键,查询是否存在以及设置失效时间。

查看键是否存在

你可以使用exist()函数来检测键是否存在。

redisClient.exists('language',function(err,reply) {
 if(!err) {
  if(reply === 1) {
   console.log("Key exists");
  } else {
   console.log("Does't exists");
  }
 }
});

删除键

你可以使用del()函数来从Redis中删除键

redisClient.del('redisClient',function(err,reply) {
 if(!err) {
  if(reply === 1) {
   console.log("Key is deleted");
  } else {
   console.log("Does't exists");
  }
 }
});

设置键的失效时间

你也可以设置键的失效时间。一旦失效时间到了,Redis将自动删除那个键,你将它用到Session的存储上是非常有效的。
你可以使用expire()函数来做这件事:

redisClient.expire('redisClient', 30); // 失效时间为30秒.

监控Redis

Redis提供其操作发生的实时反馈。可以使用下面的命令,来使用和追踪它

redis-cli monitor

总结

我们介绍了Redis的基础以及安装和使用很多命令。这儿有更多的Redis特性,比如聚类等,也有很多的命令你可以去学习。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,587评论 18 139
  • 1 Redis介绍1.1 什么是NoSql为了解决高并发、高可扩展、高可用、大数据存储问题而产生的数据库解决方...
    克鲁德李阅读 5,265评论 0 36
  • 本文将从Redis的基本特性入手,通过讲述Redis的数据结构和主要命令对Redis的基本能力进行直观介绍。之后概...
    kelgon阅读 61,116评论 24 626
  • 如何定义“朋友”?——双方心理地位平等,且互相交往。 记忆中有一条陡坡路,路两旁长着高大且四季茂盛的香樟树,路的尽...
    月半out妹阅读 393评论 0 5
  • 安婉回到家,总觉得自己记忆力出现了什么问题,总会莫名觉的颈椎疼。 安婉一边走着,一边揉着脖子,屋内的景象映入了眼帘...
    暖阳不暖阅读 426评论 0 0