如何配置 Azure Redis 缓存

本主题介绍可用于 Azure Redis 缓存实例的配置。 本主题还介绍了适用于 Azure Redis 缓存实例的默认 Redis 服务器配置。

Note

有关配置和使用高级缓存功能的详细信息,请参阅如何配置持久性如何配置群集以及如何配置虚拟网络支持

配置 Redis 缓存设置

可以通过“更多服务”在 Azure 门户中访问缓存。

Azure Redis 缓存浏览边栏选项卡

若要查看缓存,请单击“更多服务”,然后搜索“Redis 缓存”。

选择所需的缓存,查看和配置该缓存的设置。

Azure Redis 缓存浏览缓存列表

可以从“Redis 缓存”边栏选项卡查看和配置缓存。

Redis 缓存的所有设置

使用“资源菜单”在“Redis 缓存”边栏选项卡上查看和配置 Azure Redis 缓存设置。

Redis 缓存设置

可使用“资源菜单”查看和配置以下设置。

概述

概述提高有关缓存的基本信息,如名称、端口、定价层和所选缓存度量值等。

活动日志

单击“活动日志”可查看已对缓存执行的操作。 也可以使用筛选来展开此视图,以包含其他资源。 有关如何使用审核日志的详细信息,请参阅 Audit operations with Resource Manager(使用 Resource Manager 执行审核操作)。 有关监视 Azure Redis 缓存事件的详细信息,请参阅操作和警报

访问控制 (IAM)

访问控制 (IAM) 部分在 Azure 门户中为基于角色的访问控制 (RBAC) 提供支持。 此配置有助于组织轻松准确地满足其访问管理要求。 有关详细信息,请参阅 Azure 门户中基于角色的访问控制

标记

“标记”部分可帮助用户整理资源。 有关详细信息,请参阅使用标记来组织 Azure 资源

诊断并解决问题

单击“诊断并解决问题”可提供常见问题和用于解决这些问题的策略。

设置

“设置”部分用于访问和配置缓存的下列设置。

访问密钥

单击“访问密钥”查看或重新生成缓存访问密钥。 这些密钥由连接到缓存的客户端使用。

Redis 缓存访问密钥

高级设置

在“高级设置”边栏选项卡上配置以下设置。

访问端口

默认情况下,为新缓存禁用非 SSL 访问。 要启用非 SSL 端口,请对“高级设置”边栏选项卡中的“仅允许通过 SSL 访问”单击“否”,并单击“保存”。

Redis 缓存访问端口

内存策略

“高级设置”边栏选项卡上的“Maxmemory policy”、“maxmemory-reserved”和“maxfragmentationmemory-reserved”设置用于为缓存配置内存策略。

Redis 缓存 Maxmemory 策略

“Maxmemory policy”用于为缓存配置逐出策略,并允许你从以下逐出策略中进行选择:

  • volatile-lru - 这是默认逐出策略。
  • allkeys-lru
  • volatile-random
  • allkeys-random
  • volatile-ttl
  • noeviction

有关 maxmemory 策略的详细信息,请参阅 Eviction policies(逐出策略)。

“maxmemory-reserved”设置用于配置保留给非缓存操作(例如故障转移期间的复制)的内存量 (MB)。 设置此值能够在负载变化时具有更一致的 Redis 服务器体验。 对于写入密集型工作负荷,应将此值设置为较高。 为此类操作保留内存后,将无法存储缓存数据。

“maxfragmentationmemory-reserve”设置配置保留以容纳内存碎片的内存量(以 MB 为单位)。 设置此值后,即使在缓存已满或接近满的状态并且碎片比率很高时,你也能拥有更加稳定的 Redis 服务器体验。 为此类操作保留内存后,无法存储缓存数据。

在选择新的内存保留值(maxmemory-reserved 或 maxfragmentationmemory-reserved)时,请注意此更改可能会如何影响已在运行的包含大量数据的缓存。 例如,如果你的 53 GB 缓存中已有 49 GB 数据,那么,将保留值更改为 8 GB 后,此更改会将系统的最大可用内存降至 45 GB。 如果你的当前 used_memoryused_memory_rss 值高于 45 GB 的新限制,则系统需要逐出数据,直到 used_memoryused_memory_rss 均低于 45 GB。 逐出可能会增加服务器负载和内存碎片。 有关 used_memoryused_memory_rss 等缓存指标的详细信息,请参阅可用指标和报告时间间隔

Important

“maxmemory-reserved”和“maxfragmentationmemory-reserved”设置仅适用于标准缓存和高级缓存。

密钥空间通知(高级设置)

Redis 密钥空间通知是在“高级设置”边栏选项卡上配置的。 密钥空间通知让客户端能够在发生特定事件时接收通知。

Redis 缓存高级设置

Important

密钥空间通知和“notify-keyspace-events”设置仅适用于标准缓存和高级缓存。

有关详细信息,请参阅 Redis Keyspace Notifications(Redis 密钥空间通知)。 有关示例代码,请参阅 Hello world 示例中的 KeySpaceNotifications.cs 文件。

Redis 缓存顾问

“Redis 缓存顾问”边栏选项卡会显示适用于缓存的建议。 在正常操作期间,不会显示任何建议。

建议

如果在缓存操作期间发生任何状况(例如,高内存使用率、网络带宽或服务器负载),会在“Redis 缓存”边栏选项卡中显示警报。

建议

可在“建议”边栏选项卡上找到进一步的信息。

建议

可以在“Redis 缓存”边栏选项卡的监视图表使用率图表部分监视这些度量值。

每个定价层都有不同的客户端连接、内存和带宽的限制。 如果缓存持续一段时间接近这些度量值的最大容量,即会提供建议。 有关通过“建议”工具查看的指标和限制的详细信息,请参阅下表:

Redis 缓存度量值 详细信息
网络带宽使用率 缓存性能 - 可用带宽
连接的客户端数 默认 Redis 服务器配置 - maxclients
服务器负载 使用率图表 - Redis 服务器负载
内存使用率 缓存性能 - 大小

若要升级缓存,请单击“立即升级”以更改定价层并缩放缓存。 有关选择定价层的详细信息,请参阅应使用哪种 Redis 缓存产品和大小?

缩放

单击“缩放”可查看或更改缓存的定价层。 有关缩放的详细信息,请参阅如何缩放 Azure Redis 缓存

Redis 缓存定价层

Redis 群集大小

单击“(预览) Redis 群集大小”可更改正在运行并且已启用群集的高级缓存的群集大小。

Note

请注意,虽然 Azure Redis 缓存高级层已发行公开上市版,但 Redis 群集大小功能目前以预览版提供。

Redis 群集大小

要更改群集大小,请使用滑块,或在“分片计数”文本框中键入 1 到 10 之间的数字,并单击“确定”进行保存。

Important

Redis 群集仅适用于高级缓存。 有关详细信息,请参阅 如何为高级 Azure Redis 缓存配置群集功能

Redis 数据持久性

单击“Redis 数据持久性”可启用、禁用或配置高级缓存的数据持久性。 Azure Redis 缓存通过 RDB 持久性AOF 持久性提供 Redis 持久性。

有关详细信息,请参阅如何为高级 Azure Redis 缓存配置持久性

Important

Redis 数据持久性仅适用于高级缓存。

计划更新

可以通过“计划更新”边栏选项卡指定一个维护时段,以便针对缓存进行 Redis 服务器更新。

Important

维护时段仅适用于 Redis 服务器更新,不适用于任何 Azure 更新或托管缓存的 VM 的操作系统更新。

计划更新

要指定维护时段,请勾选合适的日期,并指定每天的维护时段开始时间,最后再单击“确定”。 请注意,维护时段使用 UTC 时间。

Important

“计划更新”功能仅适用于高级层缓存。 有关详细信息和说明,请参阅 Azure Redis 缓存管理 - 计划更新

异地复制

“异地复制”边栏选项卡提供一种用于链接两个高级层 Azure Redis 缓存实例的机制。 一个缓存指定为主链接缓存,另一个缓存指定为辅助链接缓存。 辅助链接缓存将变为只读,写入主缓存的数据将复制到辅助链接缓存。 此功能可用于跨 Azure 区域复制缓存。

Important

异地复制仅适用于高级层缓存。 有关详细信息和说明,请参阅如何为 Azure Redis 缓存配置异地复制

虚拟网络

使用“虚拟网络”部分,可配置缓存的虚拟网络设置。 有关利用 VNET 支持创建高级缓存并更新其设置的信息,请参阅如何配置高级 Azure Redis 缓存的虚拟网络支持

Important

虚拟网络设置仅适用于缓存创建期间利用 VNET 支持配置的高级缓存。

防火墙

防火墙规则配置可用于所有 Azure Redis 缓存层。

单击“防火墙”,查看和配置缓存的防火墙规则。

防火墙

可以指定具有开始和结束 IP 地址范围的防火墙规则。 配置防火墙规则时,仅指定 IP 地址范围内的客户端连接可以连接到缓存。 保存防火墙规则后,规则生效前会有短暂延迟。 延迟通常不超过 1 分钟。

Important

即使配置了防火墙规则,仍始终允许来自 Azure Redis 缓存监视系统的连接。

属性

单击“属性”查看有关缓存的信息,包括缓存终结点和端口。

Redis 缓存属性

“锁定”部分可用来锁定订阅、资源组或资源,以防止组织中的其他用户意外删除或修改关键资源。 有关详细信息,请参阅 使用 Azure 资源管理器锁定资源

自动化脚本

单击“自动化模板”可生成并导出已部署资源的模板,以用于将来部署。 有关使用模板的详细信息,请参阅使用 Azure Resource Manager 模板部署资源

管理设置

可以通过“管理”部分的设置针对缓存执行以下管理任务。

管理

导入/导出

导入/导出是一种 Azure Redis 缓存数据管理操作,可以将 Redis 缓存数据库 (RDB) 快照从高级缓存导入和导出到 Azure 存储帐户中的页 blob,从而在缓存中导入和导出数据。 导入/导出允许在不同 Azure Redis 缓存实例之间进行迁移,或者在使用缓存之前在缓存中填充数据。

导入可用于从任何云或环境中运行的任何 Redis 服务器引入与 Redis 兼容的 RDB 文件,包括在 Linux、Windows 上运行的 Redis 或任何云提供程序(如 Amazon Web Services 等)。 导入数据是使用预先填充的数据创建缓存的简单方式。 在导入过程中,Azure Redis 缓存从 Azure 存储将 RDB 文件加载到内存中,此后再将密钥插入到缓存中。

使用导出可以将 Azure Redis 缓存中存储的数据导出到与 Redis 兼容的 RDB 文件。 可以使用此功能将一个 Azure Redis 缓存实例中的数据移到另一个 Azure Redis 缓存实例或另一个 Redis 服务器。 在导出过程中,将在托管 Azure Redis 缓存服务器实例的 VM 上创建临时文件,并将该文件上传到指定的存储帐户。 导出操作完成后,无论状态为成功还是失败,都会删除临时文件。

Important

导入/导出仅适用于高级层缓存。 有关详细信息和说明,请参阅在 Azure Redis 缓存中导入和导出数据

重新启动

可通过“重新启动”边栏选项卡重新启动缓存的节点。 如果有缓存节点发生故障,此重新启动功能可用于测试应用程序的复原能力。

重新启动

如果高级缓存启用了群集功能,则可选择要重新启动的缓存分片。

重新启动

要重新启动缓存的一个或多个节点,请选择所需节点,并单击“重新启动”。 如果高级缓存启用了群集功能,请选择要重新启动的分片,并单击“重新启动”。 几分钟后,所选节点将重新启动,再过几分钟后,又会回到联机状态。

Important

现在所有定价层都可以重新启动。 有关详细信息和说明,请参阅 Azure Redis 缓存管理 - 重启

监视

“监视”部分用于配置诊断和监视 Redis 缓存。 有关 Azure Redis 缓存监视和诊断的详细信息,请参阅如何监视 Azure Redis 缓存

诊断

Redis 指标

单击“Redis 指标”可查看度量值(用于缓存的)。

警报规则

单击“警报规则” 可基于 Redis 缓存指标配置警报。 有关详细信息,请参阅警报

诊断

默认情况下,Azure Monitor 中的缓存指标将存储 30 天,然后被删除。 若要将缓存指标保留超过 30 天,请单击“诊断”,配置存储帐户以用于存储缓存诊断。

Note

除了将缓存指标存档到存储中外,还可以将其流式传输到事件中心或将其发送到 Log Analytics

支持和故障排除设置

“支持 + 疑难解答”部分中的设置提供了用于解决缓存问题的选项。

支持 + 疑难解答

资源运行状况

“资源运行状况”会监视资源,并告知资源是否按预期运行。 有关 Azure 资源运行状况服务的详细信息,请参阅 Azure 资源运行状况概述

Note

资源运行状况当前无法报告在虚拟网络中托管的 Azure Redis 缓存实例的运行状况。 有关详细信息,请参阅在 VNET 中托管缓存时,是否可以使用所有缓存功能?

新建支持请求

单击“新建支持请求”可建立缓存的支持请求。

默认 Redis 服务器配置

新的 Azure Redis 缓存实例均已配置以下默认 Redis 配置值:

Note

无法使用 StackExchange.Redis.IServer.ConfigSet 方法更改本部分中的设置。 如果使用此部分中的任一命令调用此方法,将引发类似于如下示例的异常:

StackExchange.Redis.RedisServerException: ERR unknown command 'CONFIG'

任何可配置的值(例如 max-memory-policy)都可以通过 Azure 门户或命令行管理工具(例如 Azure CLI 或 PowerShell)进行配置。

设置 默认值 说明
databases 16 默认的数据库数为 16,但可以根据定价层配置不同数目。1 默认数据库是 DB 0,可以基于每个连接使用 connection.GetDatabase(dbid)(其中 dbid 是介于 0databases - 1 之间的数字)选择其他数据库。
maxclients 取决于定价层2 该值是同一时间内允许的最大已连接客户端数。 一旦达到该限制,Redis 会在关闭所有新连接的同时返回“达到客户端最大数量”的错误。
maxmemory-policy volatile-lru Maxmemory 策略是达到 maxmemory(创建缓存时所选缓存服务的大小)时,Redis 会根据它选择要删除内容的设置。 Azure Redis 缓存的默认设置为 volatile-lru,此设置使用 LRU 算法删除具有过期设置的密钥。 可以在 Azure 门户中配置此设置。 有关详细信息,请参阅内存策略
maxmemory-samples 3 LRU 算法和最小 TTL 算法都是近似算法而不是精确算法,这是为了节省内存。 默认情况下,Redis 会检查三个密钥并选取最近使用较少的一个。
lua-time-limit 5,000 Lua 脚本的最大执行时间(以毫秒为单位)。 如果达到最大执行时间,Redis 会记录达到最大允许时间后仍继续执行的脚本,并开始在查询答复时出现错误。
lua-event-limit 500 脚本事件队列的最大大小。
client-output-buffer-limit normalclient-output-buffer-limit pubsub 0 0 032mb 8mb 60 客户端输出缓冲区限制可用于强制断开处于某种原因(一个常见原因是发布/订阅客户端处理消息的速度慢于发布者提供消息的速度)而未从服务器快速读取数据的客户端的连接。 有关详细信息,请参阅 http://redis.io/topics/clients

1每个 Azure Redis 缓存定价层的 databases 限制是不同的,可以在创建缓存时进行设置。 如果在创建缓存期间未指定 databases 设置,则默认值为 16。

  • 基本缓存和标准缓存
    • C0 (250 MB) 缓存 - 最多支持 16 个数据库
    • C1 (1 GB) 缓存 - 最多支持 16 个数据库
    • C2 (2.5 GB) 缓存 - 最多支持 16 个数据库
    • C3 (6 GB) 缓存 - 最多支持 16 个数据库
    • C4 (13 GB) 缓存 - 最多支持 32 个数据库
    • C5 (26 GB) 缓存 - 最多支持 48 个数据库
    • C6 (53 GB) 缓存 - 最多支持 64 个数据库
  • 高级缓存
    • P1 (6 GB - 60 GB) - 最多支持 16 个数据库
    • P2 (13 GB - 130 GB) - 最多支持 32 个数据库
    • P3 (26 GB - 260 GB) - 最多支持 48 个数据库
    • P4 (53 GB - 530 GB) - 最多支持 64 个数据库
    • 所有启用了 Redis 群集的高级缓存 - Redis 群集仅支持使用数据库 0,因此任何启用了 Redis 群集的高级缓存的 databases 限制实际上是 1,并且不允许使用 Select 命令。 有关详细信息,请参阅使用群集功能时,是否需要对客户端应用程序进行更改?

有关数据库的详细信息,请参阅什么是 Redis 数据库?

Note

databases 设置只能在创建缓存期间配置,并且只能使用 PowerShell、CLI 或其他管理客户端进行配置。 有关在创建缓存期间使用 PowerShell 配置 databases 的示例,请参阅 New-AzureRmRedisCache

2maxclients 对于每个 Azure Redis 缓存定价层都是不同的。

  • 基本缓存和标准缓存
    • C0 (250 MB) 缓存 - 最多支持 256 个连接
    • C1 (1 GB) 缓存 - 最多支持 1,000 个连接
    • C2 (2.5 GB) 缓存 - 最多支持 2,000 个连接
    • C3 (6 GB) 缓存 - 最多支持 5,000 个连接
    • C4 (13 GB) 缓存 - 最多支持 10,000 个连接
    • C5 (26 GB) 缓存 - 最多支持 15,000 个连接
    • C6 (53 GB) 缓存 - 最多支持 20,000 个连接
  • 高级缓存
    • P1 (6 GB - 60 GB) - 最多支持 7,500 个连接
    • P2 (13 GB - 130 GB) - 最多支持 15,000 个连接
    • P3 (26 GB - 260 GB) - 最多支持 30,000 个连接
    • P4 (53 GB - 530 GB) - 最多支持 40,000 个连接

Note

虽然每个缓存大小最多允许一定数量的连接,但与 Redis 的每个连接都具有其关联的开销。 此类开销的一个示例是,由于 TLS/SSL 加密而导致的 CPU 和内存使用。 给定缓存大小的最大连接限制假定轻负载缓存。 如果连接开销的负载客户端操作的负载超出了系统容量,那么即使未超出当前缓存大小的连接限制,缓存也可能会遇到容量问题。

Azure Redis 缓存中不支持的 Redis 命令

Important

因为 Azure Redis 缓存实例的配置和管理由 Microsoft 进行管理,所以禁用了以下命令。 如果尝试调用它们,将收到一条类似于 "(error) ERR unknown command" 的错误消息。

  • BGREWRITEAOF
  • BGSAVE
  • CONFIG
  • DEBUG
  • MIGRATE
  • SAVE
  • SHUTDOWN
  • SLAVEOF
  • CLUSTER - 群集写命令已禁用,但允许使用只读群集命令。

有关 Redis 命令的详细信息,请参阅 http://redis.io/commands

Redis 控制台

可以使用“Redis 控制台”向 Azure Redis 缓存实例安全地发出命令,此操作在 Azure 门户中适用于所有缓存层。

Important

  • Redis 控制台无法使用 VNET。 如果缓存是 VNET 的一部分,则只有 VNET 中的客户端可以访问缓存。 由于 Redis 控制台在本地浏览器中运行(这在 VNET 的外部),因此它无法连接到缓存。
  • Azure Redis 缓存中并不支持所有 Redis 命令。 有关为 Azure Redis 缓存禁用的 Redis 命令列表,请参阅之前的 Azure Redis 缓存中不支持的 Redis 命令部分。 有关 Redis 命令的详细信息,请参阅 http://redis.io/commands

要访问 Redis 控制台,则从“Redis 缓存”边栏选项卡单击“控制台”。

Redis 控制台

若要针对缓存实例发出命令,只需将所需命令键入到控制台即可。

Redis 控制台

配合使用 Redis 控制台和高级群集缓存

配合使用 Redis 控制台和高级群集缓存时,可向缓存的单个分片发出命令。 若要向某个特定分片发出命令,请首先在分片选取器上单击所需的分片以连接到它。

Redis 控制台

如果尝试访问存储在不同分片(而非已连接的分片)中的密钥,将收到类似于以下消息的错误消息:

shard1>get myKey
(error) MOVED 866 13.90.202.154:13000 (shard 0)

在之前的示例中,分片 1 为所选分片,但如错误消息的 (shard 0) 部分所述,myKey 位于分片 0 中。 在此示例中,若要访问 myKey,请使用分片选取器选择分片 0,然后发出所需命令。

将缓存移动到新的订阅

可以单击“移动”,将缓存移动到新的订阅。

移动 Redis 缓存

有关在资源组之间以及订阅之间移动资源的信息,请参阅将资源移到新的资源组或订阅

后续步骤