隐藏

Node.js和Redis入门-安装与命令

发布:2023/11/2 22:53:13作者:管理员 来源:本站 浏览次数:557

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服务需要通过认证被保护的时候需要。你必须在连接上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特性,比如聚类等,也有很多的命令你可以去学习。