启用 Redis 密钥空间通知(预览版)

Redis 密钥空间通知允许客户端订阅 Pub/Sub 通道,以某种方式接收影响 Redis 数据集的事件。 使用密钥空间通知(预览版)监视Azure托管 Redis 缓存中密钥和值的更改。

本文介绍如何部署启用了密钥空间通知的缓存、使用 Redis 命令连接客户端、订阅通知通道以及测试生成的事件。

先决条件

  • Redis Insight 或 redis-cli 命令行工具。 有关安装步骤,请参阅 使用客户端工具管理Azure托管 Redis 中的数据

    注释

    使用 Redis 客户端工具时,建议在可用的情况下,使用 Microsoft Entra ID 身份验证连接到 Azure 托管的 Redis。

  • 了解 Azure 资源管理器 (ARM) 模板。 有关详细信息,请参阅 Azure 资源管理器 文档

  • 对于 Azure CLI:

    • 如需在本地运行 CLI 参考命令,请安装 Azure CLI。 如果在 Windows 或 macOS 上运行,请考虑在 Docker 容器中运行 Azure CLI。 有关详细信息,请参阅如何在 Docker 容器中运行 Azure CLI

      • 如果使用本地安装,请使用 az login 命令登录到Azure CLI。 若要完成身份验证过程,请遵循终端中显示的步骤。 有关其他登录选项,请参阅使用 Azure CLI 登录

      • 出现提示时,请在首次使用时安装 Azure CLI 扩展。 有关扩展的详细信息,请参阅 将扩展与 Azure CLI 配合使用

      • 运行az version命令,以查看已安装的版本和依赖库。 若要升级到最新版本,请运行az upgrade

部署启用了密钥空间通知的缓存

在此示例中,使用 Azure 资源管理器 (ARM) 模板和Azure CLI部署启用了密钥空间通知的 Azure 托管 Redis 缓存。

请修改以下模板中的CacheNameRegion参数,并将文件命名为KeyspaceTemplate.json进行保存。

注释

notifyKeyspaceEvents "KEA" 的值为大多数事件启用键空间通知。 至少需要“K”或“E”才能接收密钥空间通知。 有关不同事件类型以及如何为其配置通知的详细信息,请参阅 Redis 密钥空间通知文档

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "cachename": {
            "defaultValue": "{CacheName}",
            "type": "String"
        },
        "region": {
            "defaultValue": "{Region}",
            "type": "String"
        }
    },
    "variables": {},
    "resources": [
        {
            "type": "Microsoft.Cache/redisEnterprise",
            "apiVersion": "2026-02-01-preview",
            "name": "[parameters('cachename')]",
            "location": "[parameters('region')]",
            "sku": {
                "name": "Balanced_B5"
            },
            "identity": {
                "type": "None"
            },
            "properties": {
                "minimumTlsVersion": "1.2",
                "publicNetworkAccess": "Enabled"
            }
        },
        {
            "type": "Microsoft.Cache/redisEnterprise/databases",
            "apiVersion": "2026-02-01-preview",
            "name": "[concat(parameters('cachename'), '/default')]",
            "dependsOn": [
                "[resourceId('Microsoft.Cache/redisEnterprise', parameters('cachename'))]"
            ],
            "properties": {
                "clientProtocol": "Encrypted",
                "port": 10000,
                "clusteringPolicy": "OSSCluster",
                "evictionPolicy": "NoEviction",
                "persistence": {
                    "aofEnabled": false,
                    "rdbEnabled": false
                },
                "notifyKeyspaceEvents": "KEA"
            }
        }
    ]
}

使用 az 部署组 create Azure CLI 命令部署模板。 在以下示例中,部署位于 exampleRG 资源组中。

az deployment group create --resource-group exampleRG --template-file KeyspaceTemplate.json

连接 Redis 客户端

使用 Redis Insight 或 redis-cli打开两个 CLI 会话并将两个客户端连接到缓存。

使用一个终端作为接收密钥空间通知的订阅服务器,另一个终端用作运行 Redis 命令的操作员。

验证和订阅事件

在任一终端中,确认已配置通知字符串。

CONFIG GET notify-keyspace-events

在订阅者终端中,选择与要观察的事件匹配的订阅模式。 以下是一些示例:

  • 订阅所有事件和所有密钥:

    PSUBSCRIBE __keyevent@0__:* __keyspace@0__:*
    
  • 订阅特定事件类型:

    SUBSCRIBE __keyevent@0__:set
    
  • 订阅特定密钥:

    SUBSCRIBE __keyspace@0__:mykey
    

测试通知

切换到操作员终端,针对测试密钥运行几个 Redis 命令。

SET mykey "hello"
EXPIRE mykey 10
DEL mykey

订阅服务器终端显示发生了哪些事件以及哪些密钥受到影响。

在以下屏幕截图中,订阅服务器终端位于左侧,订阅了所有事件和所有密钥,因此它会接收缓存中发生的所有事件的通知。 操作终端位于右侧,Redis 命令在此终端中针对各种键执行。

Redis CLI 会话显示键空间通知订阅输出。

更新通知设置

以后无需重新创建缓存即可更改密钥空间通知配置。

  1. 在保持notifyKeyspaceEventsKeyspaceTemplate.json不变的情况下,更新CacheName中的Region值。
  2. 重新部署模板。
az deployment group create --resource-group exampleRG --template-file KeyspaceTemplate.json

重新部署会更新通知设置而不丢失数据,这样就可以启用、禁用或更改跟踪的事件,例如仅从 KEAEx 跟踪过期事件。

注释

如果要更新之前显示的 ARM 模板未部署的现有缓存上的通知设置,则可以配置自己的模板来设置 notifyKeyspaceEvents 该属性。 确保模板包含现有的缓存群集和数据库配置,以避免覆盖其他缓存属性。