繁体   English   中英

Redis:二级索引到期

[英]Redis: Expiration of secondary indexes

我对最佳实践感到好奇,因为Redis中的二级索引将过期。

例如,假设我的对象ID的位置在过期之前仅被视为有效5秒钟。 我有:

objectID -> hash of object info

我将这些条目设置为5秒后自动过期。

我还想通过其邮政编码查找对象,因此我有另一个映射:

zipCode -> set or list of objectID

我知道无法自动使集合中的元素过期,但是我想在它们过期时自动从该邮政编码映射中删除objectID。

如何执行此操作的标准做法是什么? 如果在到期时触发了一个事件,我可以找到关联的邮政编码映射并删除objectID,但不确定是否存在(我将使用Go)。

如果有过期事件触发,我可以找到相关的邮政编码映射并删除objectID,但不确定是否存在

是的,有一个过期通知,请查看示例。

您可以让客户端订阅expiration事件 ,并从zipCode集或列表中删除项目。

但是,此解决方案有两个问题:

  1. 通知不可靠。 如果客户端与Redis断开连接,或者只是崩溃,客户端将丢失一些通知。 为了使其更可靠,可以让多个客户端侦听该通知。 如果一个客户端崩溃,其他客户端仍然可以从zipCode中删除项目。
  2. 这不是原子的。 在密钥过期和从zipCode中删除项目之间有一个时间窗口。

如果您对这两个问题都满意,可以尝试此解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM