目前是否只能使整个键/值对过期?如果我想将值添加到List类型结构并在插入后1小时自动删除,该怎么办?目前是否可行,或者是否需要运行cron作业来手动进行清除?
答案 0 :(得分:69)
有一种常见的模式可以很好地解决这个问题。
使用有序集,并使用时间戳作为分数。然后,按分数范围删除项目是微不足道的,这可以定期完成,或者只在每次写入时删除,读取总是忽略超出范围的元素,只读取一系列分数。
更多信息:https://groups.google.com/forum/#!topic/redis-db/rXXMCLNkNSs
答案 1 :(得分:62)
目前是否只能使整个键/值对过期?
据我所知,并且还根据key命令和关于expiration的文档,目前您只能将到期时间设置为特定密钥而不是其基础数据结构。不过,Google群组中有discussion有关此功能的概述,并提供了概述的替代解决方案。
答案 2 :(得分:3)
我想到了另一种处理方法,不知道它是否对您有帮助,但是这里有:
散列和排序集通过guid链接。
答案 3 :(得分:0)
如何创建两个单独的排序集?
主排序集key = value
。
过期排序集合key = expire_timestamp
。
如果您只想让单个分数过期,您可以设置为 key:unique_id = expire_timestamp
。
通过 zrangebyscore 的怜悯,我们可以获得过期的密钥。然后我们需要做的就是定期检查和zrem
。
如果您只想让一个分数过期:zincrby -1
。