如何在 REDIS 中的密钥过期时获取回调

Posted

技术标签:

【中文标题】如何在 REDIS 中的密钥过期时获取回调【英文标题】:How to get callback when key expires in REDIS 【发布时间】:2012-10-21 21:29:04 【问题描述】:

我正在使用 Bottle 开发应用程序。在我的注册表单中,我使用唯一密钥通过邮件确认电子邮件。我将此密钥存储在 REDIS 中,有效期为 4 天。如果用户在 4 天内未确认电子邮件,则密钥将过期。为此,我想从我的数据库(mongoDB)中永久删除用户条目。

当然,我不需要不断轮询我的 redis 服务器来检查 key 是否存在。

有没有办法从 Redis 获取回调??

或者还有其他有效的方法吗?

【问题讨论】:

请参阅Notification of key expiration in redis python 获取最新答案。 【参考方案1】:

redis 中没有这样的回调(我不知道)。

我会这样做:

当用户注册时,put his id into a sorted set 分数是时间戳(现在 + 4 天),成员是用户 ID。 有一个定期作业,该作业从时间戳为过去的排序集中获取所有记录。 遍历这些用户 ID 并采取行动(如果他没有确认 - 删除所有用户的数据)。

【讨论】:

更多信息在***.com/questions/11810020/… 技术很棒,如果你不介意我会复制的^_^【参考方案2】:

此功能在 Redis 2.8 中实现,请在此处阅读 http://redis.io/topics/notifications

【讨论】:

以上是关于如何在 REDIS 中的密钥过期时获取回调的主要内容,如果未能解决你的问题,请参考以下文章

Redis Key 过期通知 Jedis

使用 Redis 作为 Celery 结果后端和消息代理 - 任务过期(对于存储在 redis 中的密钥)

redis key过期监听

redis key过期提醒,实现订单自动取消

Redis键值过期自动执行回调函数

Redis的键过期策略