Azure Redis 缓存是否允许我设置一个函数,以便在我的缓存中的某个键过期时可靠地触发?
问问题
1345 次
1 回答
4
您可以结合使用Redis Pub/Sub和Redis Keyspace Notifications的客户端,让客户端在特定键发生事件或任何键发生特定事件时接收消息。然后,您可以使用模式匹配订阅来接收多个键的消息。您还可以从单个客户端订阅多个频道;所有消息都包括它发布到哪个频道,以便您的客户可以决定要做什么。
要在任何以开头的密钥foo
过期时接收消息,请执行以下操作:
- 将
notify-keyspace-events
配置值设置为Kx
使用 Azure 门户。为 Azure 设置值的步骤在此处。有关配置值模式的更多详细信息在此处定义。 - 使用您选择的客户端,PSUBSCRIBE(模式订阅)到您的密钥通道:
PSUBSCRIBE '__keyspace@*__:foo*'
- 使用另一个客户端连接,为您的密钥设置一个带有 TTL 的值:
SET foo42 bar EX 5
- 5 秒后,您应该会在订阅客户端上看到一条消息:
"pmessage","__keyspace@*__:foo*","__keyspace@0__:foo42","expired"
要在任何密钥过期时接收消息,请执行以下操作:
- 将
notify-keyspace-events
配置值设置为Ex
- PSUBSCRIBE 到 keyevent 通道以获取过期的密钥:
PSUBSCRIBE '__keyevent@*__:expired'
- 在另一个客户端中,设置一个带有 TTL 的密钥:
SET foo bar EX 5
- 5 秒后,在您的订阅客户端上看到一条消息:
"pmessage","__keyevent@*__:expired","__keyevent@0__:expired","foo"
为了让客户快速开发和调试,我建议使用redis-cli或Azure 门户中的 Redis 控制台。
希望这可以帮助。祝你好运!
于 2018-12-26T23:51:36.837 回答