目前是否只能使整个键/值对过期?如果我想向 List 类型结构添加值,并在插入后1小时自动删除它们,该怎么办。目前是否可以做到这一点,还是需要运行 cron 作业来手动执行清除?
目前是否只能使整个键/值对过期?
据我所知,而且根据 钥匙命令和关于 过期的文档,目前您只能将过期设置为特定的键,而不能设置为它的底层数据结构。然而,有一个 讨论对谷歌组关于这个功能与概述的替代解决方案。
有一个常见的模式可以很好地解决这个问题。
使用已排序的集合,并使用时间戳作为得分。然后,通过分数范围删除项是很简单的,这可以周期性地进行,或者只在每次写入时进行,通过只读取分数范围,读取总是忽略超出分数范围的元素。
详情请浏览: https://groups.google.com/forum/#!topic/redis-db/rXXMCLNkNSs
我想到了一个不同的处理方法,不知道对你们有没有帮助,但是:
散列和排序集由 guid 链接。
如何创建两个独立的排序集?
主排序集是 key = value。
key = value
过期排序集为 key = expire_timestamp。 如果您只想让一个分数过期,可以将其设置为 key:unique_id = expire_timestamp。
key = expire_timestamp
key:unique_id = expire_timestamp
有了 zrangebyscore 的怜悯,我们可以得到过期的密钥。然后我们需要做的就是定期检查和 zrem。 如果您只想使一个得分过期: zincrby -1。
zrem
zincrby -1