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 缓存。
请修改以下模板中的CacheName和Region参数,并将文件命名为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 命令在此终端中针对各种键执行。
更新通知设置
以后无需重新创建缓存即可更改密钥空间通知配置。
- 在保持
notifyKeyspaceEvents和KeyspaceTemplate.json不变的情况下,更新CacheName中的Region值。 - 重新部署模板。
az deployment group create --resource-group exampleRG --template-file KeyspaceTemplate.json
重新部署会更新通知设置而不丢失数据,这样就可以启用、禁用或更改跟踪的事件,例如仅从 KEA 到 Ex 跟踪过期事件。
注释
如果要更新之前显示的 ARM 模板未部署的现有缓存上的通知设置,则可以配置自己的模板来设置 notifyKeyspaceEvents 该属性。 确保模板包含现有的缓存群集和数据库配置,以避免覆盖其他缓存属性。