可靠的Redis缓存TTL过期挂钩

时间:2018-12-08 07:38:37

标签: azure-redis-cache redis-cache

Azure Redis缓存是否允许我将函数设置为在缓存中的某个键过期时可靠地触发?

1 个答案:

答案 0 :(得分:2)

您可以使用Redis Pub/SubRedis Keyspace Notifications组合客户端,以使客户端在特定键发生事件或任何键发生特定事件时收到消息。然后,您可以使用pattern-matching subscriptions接收多个按键的消息。您还可以从单个客户端订阅多个频道;所有消息都包括发布到哪个频道,以便您的客户决定要做什么。

要在以foo开头的任何键到期时收到消息,请执行以下操作:

  1. 使用Azure门户将notify-keyspace-events配置值设置为Kx。设置Azure值的步骤是herehere定义了有关配置值架构的更多详细信息。
  2. 使用您选择的客户,PSUBSCRIBE(模式订阅)进入您的密钥通道:PSUBSCRIBE '__keyspace@*__:foo*'
  3. 使用另一个客户端连接,为您的密钥设置一个TTL值:SET foo42 bar EX 5
  4. 5秒后,您应该在订阅客户端上看到一条消息:"pmessage","__keyspace@*__:foo*","__keyspace@0__:foo42","expired"

要在任何密钥到期时接收消息,请执行以下操作:

  1. notify-keyspace-events的配置值设置为Ex
  2. 订阅已过期的密钥到keyevent通道:PSUBSCRIBE '__keyevent@*__:expired'
  3. 在另一个客户端中,使用TTL设置密钥:SET foo bar EX 5
  4. 5秒后,您的订阅客户端上会显示一条消息:"pmessage","__keyevent@*__:expired","__keyevent@0__:expired","foo"

为使客户快速开发和调试,我建议使用redis-cliRedis console in the Azure Portal

希望这会有所帮助。祝你好运!