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

2023-09-23 15:10:07 浏览数 (1)

原文标题: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

代码语言:javascript复制
sudo apt-get install redis-server

Mac 上使用 brew

代码语言:javascript复制
brew install redis

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

代码语言:javascript复制
redis-server

你应该会看到下面的画面

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

代码语言:javascript复制
redis-cli

你应该能看到下面的画面

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

配置Nodejs和Redis

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

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

代码语言:javascript复制
npm i --S redis

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

代码语言:javascript复制
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的文件中,以及使用下面的命令来运行它

代码语言:javascript复制
node app.js

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

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

  • Redis连接参数列表

Redis的身份验证

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

代码语言:javascript复制
redisClient.auth('password', function(err,reply){
    console.log(reply);
});

保存键值对数据到Redis

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

存储字符串

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

代码语言:javascript复制
redisClient.set("language","nodejs")

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

代码语言:javascript复制
GET language

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

代码语言:javascript复制
redisClient.set("language","nodejs",function(err,reply){
    cnosole.log(err);
    console.log(reply);
})

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

代码语言:javascript复制
redisClient.get("language",function(err,reply){
    console.log(err);
    console.log(reply);
})

存储对象(Hash)

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

代码语言:javascript复制
{
 "webserver" : "expressjs",
 "database" : "mongoDB",
 "devops" : "jenkins"
}

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

代码语言:javascript复制
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的名称

代码语言:javascript复制
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);
});

下面是输出结果

代码语言:javascript复制
null
3//List数据个数
null
2//set数据个数

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

操作键值对

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

查看键是否存在

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

代码语言:javascript复制
redisClient.exists('language',function(err,reply) {
 if(!err) {
  if(reply === 1) {
   console.log("Key exists");
  } else {
   console.log("Does't exists");
  }
 }
});

删除键

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

代码语言:javascript复制
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()函数来做这件事:

代码语言:javascript复制
redisClient.expire('redisClient', 30); // 失效时间为30秒.

监控Redis

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

代码语言:javascript复制
redis-cli monitor

总结

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

0 人点赞