配置用于 Redis 的 Azure 缓存

已完成

可使用 Azure 门户、Azure CLI 或 Azure PowerShell 创建 Redis 缓存。

创建并配置 Azure Cache for Redis 实例

需要确定几个参数才能根据需要正确配置缓存。

名称

Redis 缓存需要全局唯一名称。 该名称在 Azure 中必须唯一,因为它用于生成面向公众的 URL 以与服务连接和通信。

该名称必须介于 1 到 63 个字符之间,由数字、字母和“-”字符组成。 缓存名称的开头或末尾不能是“-”字符,并且连续的“-”字符无效。

位置

请始终将缓存实例和应用程序放在同一区域。 连接到不同区域中的缓存可能会明显提高延迟并降低可靠性。 若要连接到 Azure 外部的缓存,请选择与数据使用者应用程序的运行位置相靠近的位置。

缓存类型

此层决定可用于缓存的大小、性能和功能。 有关详细信息,请访问 Azure Cache for Redis 定价

提示

Microsoft 建议始终为生产系统使用标准层或更高层。 基本层是没有数据复制和 SLA 的单节点系统。

群集支持

使用 Premium、Enterprise 和 Enterprise Flash 层,可以实现群集模式,以在多个节点之间自动拆分数据集。 若要实施群集,请将分片数指定为最多 10 个。 产生的成本是原始节点的成本乘以分片数。

访问 Redis 实例

Redis 具有一个命令行工具,用于与 Azure Cache for Redis 客户端交互。 下载用于 Windows 的 Redis 命令行工具 后,即可在 Windows 平台上使用此工具。 如需在其他平台上运行该命令行工具,请从 https://redis.io/download 下载 Azure Redis 缓存。

Redis 支持一组已知的命令。 命令通常以 COMMAND parameter1 parameter2 parameter3 的形式发出。

下面是一些可用的常见命令:

命令 说明
ping Ping 服务器。 返回 PONG
set [key] [value] 在缓存中设置键/值。 成功时返回“OK”。
get [key] 从缓存中获取值。
exists [key] 如果缓存中存在该,则返回“1”,否则返回“0”。
type [key] 返回与给定键的值相关联的类型。
incr [key] 以“1”为增量递增与键关联的给定值。 该值必须是整数或双精度值。 这会返回新值。
incrby [key] [amount] 以指定的数量为增量递增与关联的给定值。 该值必须是整数或双精度值。 返回新值。
del [key] 删除与关联的值。
flushdb 删除数据库中的所有键和值。

下面是命令的示例:

> set somekey somevalue
OK
> get somekey
"somevalue"
> exists somekey
(string) 1
> del somekey
(string) 1
> exists somekey
(string) 0

将过期时间添加到值

缓存非常重要,因为它可让我们在内存中存储常用的值。 但是,我们还需要通过某种方式使陈旧的值过期。 在 Redis 中,通过将生存时间 (TTL) 应用于某个键来完成使值过期。

TTL 过后,会自动删除该键,就像是发出了 DEL 命令一样。 下面是有关 TTL 过期的一些说明。

  • 可以使用秒或毫秒精度设置过期时间。
  • 过期时间解析度始终为 1 毫秒。
  • 关于过期的信息将复制并保存到磁盘上,该时间大致从 Redis 服务器保持停止状态时开始流逝(这意味着,Redis 会保存密钥到期日期)。

下面是过期时间的示例:

> set counter 100
OK
> expire counter 5
(integer) 1
> get counter
100
... wait ...
> get counter
(nil)

从客户端访问 Redis 缓存

要连接到 Azure Cache for Redis 实例,将需要一些信息。 客户端需要主机名、端口和缓存的访问密钥。 可以在 Azure 门户中通过“设置”>“访问密钥”页检索此信息。

  • 主机名是缓存的公共 Internet 地址,该地址是使用缓存名称创建的。 例如 sportsresults.redis.cache.windows.net

  • 访问密钥充当缓存的密码。 创建了两个密钥:主密钥和辅助密钥。 可使用任一键。 两者都会提供,以防你需要更改主键。 可将所有客户端切换到辅助密钥,然后重新生成主密钥。 这会阻止任何应用程序使用原始主密钥。 Microsoft 建议定期重新生成密钥 - 就像定期更改个人密码一样。

警告

访问密钥应视为机密信息,请像对待密码一样对待它们。 获取访问密钥的任何人可以针对你的缓存执行任何操作!