配置用于 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 建议定期重新生成密钥 - 就像定期更改个人密码一样。
警告
访问密钥应视为机密信息,请像对待密码一样对待它们。 获取访问密钥的任何人可以针对你的缓存执行任何操作!