快速入门:如何将 Azure Redis 缓存与 Node.js 配合使用

Azure Redis 缓存允许访问 Microsoft 管理的安全、专用的 Redis 缓存。 可从 Azure 内部的任何应用程序访问缓存。

本主题说明如何将 Azure Redis 缓存与 Node.js 配合使用。

可使用任何代码编辑器来完成本快速入门中的步骤。 但是,Visual Studio Code 是一个很好的选项,可用于 Windows、macOS 和 Linux 平台。

已完成的缓存应用

如果没有 Azure 订阅,可在开始前创建一个试用帐户

先决条件

安装 node_redis

npm install redis

本教程使用的是 node_redis。 有关使用其他 Node.js 客户端的示例,请使用与 Node.js Redis 客户端中列出的 Node.js 客户端对应的各个文档。

创建缓存

  1. 若要创建缓存,请首先登录到 Azure 门户。 然后选择“创建资源” > “数据库” > “Redis 缓存”。

    新建缓存

  2. 在“新建 Redis 缓存”中,配置新缓存的设置。

    设置 建议的值 说明
    DNS 名称 全局唯一名称 缓存名称。 必须是 1 到 63 个字符的字符串,只能包含数字、字母和 - 字符。 缓存名称的开头或末尾不能是 - 字符,并且连续的 - 字符无效。
    订阅 你的订阅 要在其下创建此新 Azure Redis 缓存实例的订阅。
    资源组 TestResources 要在其中创建缓存的新资源组的名称。 通过将应用的所有资源都放在一个组中,可以一起管理它们。 例如,删除资源组会删除与该应用关联的所有资源。
    位置 中国北部 选择将使用缓存的其他服务附近的区域
    定价层 基本 C0(250 MB 缓存) 定价层决定可用于缓存的大小、性能和功能。 有关详细信息,请参阅 Azure Redis 缓存概述
    固定到仪表板 选定 将新缓存固定到仪表板,使其容易被找到。

    创建缓存

  3. 配置了新缓存设置后,选择“创建”。

    创建缓存可能耗时几分钟。 若要检查状态,可以监视仪表板上的进度。 缓存在创建后会显示状态为“正在运行”,可供用户使用。

    创建的缓存

使用 Azure 门户检索主机名、端口和访问密钥

连接到某个 Azure Redis 缓存实例时,缓存客户端需要该缓存的主机名、端口和密钥。 在某些客户端中,这些项的名称可能略有不同。 可以在 Azure 门户中检索此信息。

检索访问密钥和主机名的步骤

  1. 若要使用 Azure 门户检索访问密钥,请浏览到缓存,然后选择“访问密钥”。

    Azure Redis 缓存密钥

  2. 若要检索主机名和端口,请选择“属性”。

    Azure Redis 缓存属性

主机名访问密钥添加环境变量。 你将通过代码使用这些变量,而不是直接在代码中包含敏感信息。

set REDISCACHEHOSTNAME=contosoCache.redis.cache.chinacloudapi.cn
set REDISCACHEKEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

连接到缓存

最新版本的 node_redis 支持使用 SSL 连接到 Azure Redis 缓存。 以下示例显示了如何使用 SSL 终结点 6380 连接到 Azure Redis 缓存。

var redis = require("redis");

// Add your cache name and access key.
var client = redis.createClient(6380, process.env.REDISCACHEHOSTNAME,
    {auth_pass: process.env.REDISCACHEKEY, tls: {servername: process.env.REDISCACHEHOSTNAME}});

不要为代码中的每个操作创建新连接, 而应尽可能重用连接。

新建 Node.js 应用

创建名为 redistest.js 的新脚本文件。

将下面的示例 JavaScript 添加到文件。 此代码演示如何使用缓存主机名和密钥环境变量连接到 Azure Redis 缓存实例。 此代码还在缓存中存储和检索字符串值。 还执行了 PINGCLIENT LIST 命令。 有关将 Redis 与 node_redis 客户端一起使用的更多示例,请参阅 http://redis.js.org/

var redis = require("redis");
var bluebird = require("bluebird");

bluebird.promisifyAll(redis.RedisClient.prototype);
bluebird.promisifyAll(redis.Multi.prototype);

async function testCache() {

    // Connect to the Redis cache over the SSL port using the key.
    var cacheConnection = redis.createClient(6380, process.env.REDISCACHEHOSTNAME, 
        {auth_pass: process.env.REDISCACHEKEY, tls: {servername: process.env.REDISCACHEHOSTNAME}});

    // Perform cache operations using the cache connection object...

    // Simple PING command
    console.log("\nCache command: PING");
    console.log("Cache response : " + await cacheConnection.pingAsync());

    // Simple get and put of integral data types into the cache
    console.log("\nCache command: GET Message");
    console.log("Cache response : " + await cacheConnection.getAsync("Message"));    

    console.log("\nCache command: SET Message");
    console.log("Cache response : " + await cacheConnection.setAsync("Message",
        "Hello! The cache is working from Node.js!"));    

    // Demostrate "SET Message" executed as expected...
    console.log("\nCache command: GET Message");
    console.log("Cache response : " + await cacheConnection.getAsync("Message"));    

    // Get the client list, useful to see if connection list is growing...
    console.log("\nCache command: CLIENT LIST");
    console.log("Cache response : " + await cacheConnection.clientAsync("LIST"));    
}

testCache();

使用 Node.js 运行该脚本。

node redistest.js

在以下示例中可以看到,Message 键事先已包含一个缓存值,该值是使用 Azure 门户中的 Redis 控制台设置的。 应用更新了该缓存值。 应用还执行了 PINGCLIENT LIST 命令。

已完成的缓存应用

清理资源

如果想要继续学习下一篇教程,可以保留本快速入门中创建的资源,以便重复使用。

如果已完成快速入门示例应用程序,可以删除本快速入门中创建的 Azure 资源,以免产生费用。

Important

删除资源组的操作不可逆,资源组以及其中的所有资源将被永久删除。 请确保不会意外删除错误的资源组或资源。 如果在现有资源组(其中包含要保留的资源)中为托管此示例而创建了相关资源,可从各自的边栏选项卡逐个删除这些资源,而不要删除资源组。

登录到 Azure 门户,并单击“资源组”。

在“按名称筛选...”文本框中键入资源组的名称。 本文的说明使用了名为 TestResources 的资源组。 在结果列表中的资源组上,单击“...”,然后单击“删除资源组”。

删除

系统会要求确认是否删除资源组。 键入资源组的名称进行确认,然后单击“删除”。

片刻之后,将会删除该资源组及其包含的所有资源。

后续步骤

本快速入门介绍了如何通过 Node.js 应用程序使用 Azure Redis 缓存。 继续学习下一个快速入门,以便将 Redis 缓存用于 ASP.NET Web 应用。