将 Redis 与 Node.js 一起使用

272 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 8 天,点击查看活动详情

什么是 Redis

Redis是一种内存数据结构存储,可用作数据库、缓存和消息代理。Redis 支持字符串、列表、集合、哈希、位图等不同的数据结构。简单的 Redis 使用你的 RAM 来存储非常快的数据,但是如果你重新启动你的服务器,这些值就会消失,除非你启用 R edis persistence。好消息,Redis 默认为你启用了持久化机制(你可以根据需要禁用或配置持久化。)

安装 Redis (Linux)

参考:https ://redis.io/download

*使用以下命令下载、解压缩和编译 Redis:

$ wget http://download.redis.io/releases/redis-4.0.9.tar.gz  
$ tar xzf redis-4.0.9.tar.gz  
$ cd redis-4.0.9  
$ make

现在编译的二进制文件在src目录中可用。使用以下命令运行 Redis:

$ src/redis 服务器

您可以使用内置客户端与 Redis 交互:

$ src/redis-cli  
redis> set foo bar  
OK  
redis> get foo  
"bar"

现在我们已经在本地机器上成功安装了Redis。在这里您可以看到我们可以与 Redis 一起使用的有用命令。它们超级简单而且很有帮助。花一些时间使用这些命令。

在 NodeJS 应用程序中使用 Redis

首先你需要通过npm安装 NodeJS 的 Redis 客户端。

npm install redis

现在在您的 NodeJS 项目中创建一个名为 redisDemo.js 的文件。

// redisDemo.js  
var redis = require('redis');  
var client = redis.createClient(); // 这将创建一个新客户端

默认情况下,redis.createClient() 将使用 127.0.0.1 和端口 6379。如果您有自定义的 ip 和端口使用

var client = redis.createClient(port, host);

现在,我们要监听connect事件以查看我们是否成功连接到 redis-server。我们可以像这样检查连接是否成功。

client.on('connect', **function** () {  
console.log('Redis 客户端连接');  
});

同样,我们要检查我们是否未能连接到 redis 服务器。好吧,我们可以为此监听错误事件。

client.on('error', function (err) { 
    console.log('出错了' + err); 
});

当您忘记在应用程序运行之前启动redis-server时,这可能会触发。 **所以在测试这段代码之前一定要运行redis服务器。

注意:您可以使用以下命令启动、停止 redis 服务器。

/etc/init.d/redis-server 停止
/etc/init.d/redis-server 启动

让我们看看我们的代码现在是什么样子。

var redis = require('redis'); 
var client = redis.createClient(); 

client.on('connect', function () { 
    console.log('Redis 客户端连接'); 
}); 

client.on('error', function (err) { 
    console.log('出错了' + err); 
});

现在,让我们看看如何在 Redis 中的键下设置一些简单的值。您可以为此使用 set() 和 get() 方法。

client.set('我的测试键', '我的测试值', redis.print); 
client.get('my test key', function (error, result) { 
    if (error) { 
        console.log(error); 
        throw error; 
    } 
    console.log('GET result ->' + result); 
});

在 client.set() 中,我们首先给出键,然后给出值。请记住 Redis 是一个键值存储。Redis 将创建一个名为 “my test key”的键, 并为该键分配值 “my test value”

您会看到我在 set() 方法上使用了redis.print 。 好吧,它向控制台打印“Reply: OK”,表示 Redis 保存了该值。如果你愿意,你可以省略那个论点。

现在在 get() 方法中,我们通过指定确切的键名来简单地检索我们刚刚保存的值。然后它将在控制台中打印保存的值。

现在让我们看看完整的代码。

var redis = require('redis');
var client = redis.createClient();

client.on('connect', function() {
    console.log('Redis client connected');
});

client.on('error', function (err) {
    console.log('Something went wrong ' + err);
});

client.set('my test key', 'my test value', redis.print);
client.get('my test key', function (error, result) {
    if (error) {
        console.log(error);
        throw error;
    }
    console.log('GET result ->' + result);
});

输出结果如下

Redis client connected
Reply: OK
GET result ->my test value

结论

Redis 是非常强大的内存数据存储,我们可以在我们的应用程序中使用它。保存和获取数据非常简单,没有太多开销。有关更多用例,请参阅www.npmjs.com/package/red… 有关更多 redis 命令,请参阅redis.io/commands 。