我正在进行自动完成设置,并考虑使用redis有序集合。关于这方面有很多文档,但要点是添加前缀,例如
然后,当查询出现时,在查询上使用
无论如何,我想对集合中的特定成员实现TTL,而不是整个集合。我知道这在redis中不能直接实现,因此我正在寻找替代解决方案。一种选择是将时间戳用作等级,但这在自动完成中行不通,因为等级很重要,它们需要具有相同的分数以按字典顺序排序。
我正在考虑的解决方案是将有序集合有效地复制到无序集合中。这将存储像
我的问题是是否有更好的方法来做到这一点?在规模和简单性方面。谢谢!
abc
将ZADD mySet
- 0 a
,0 ab
,0 abc
,0 abc*
。然后,当查询出现时,在查询上使用
ZRANK
,然后根据此使用ZRANGE
获取匹配的结果。无论如何,我想对集合中的特定成员实现TTL,而不是整个集合。我知道这在redis中不能直接实现,因此我正在寻找替代解决方案。一种选择是将时间戳用作等级,但这在自动完成中行不通,因为等级很重要,它们需要具有相同的分数以按字典顺序排序。
我正在考虑的解决方案是将有序集合有效地复制到无序集合中。这将存储像
<prefix>:timestamp
这样的值。然后可以按计划获取这里的成员,检查时间,如果过期就从有序集合中删除。显然,这会增加内存使用量,但这是可行的。我的问题是是否有更好的方法来做到这一点?在规模和简单性方面。谢谢!
ZRANGEBYLEX
和词典索引,以了解您所描述的更大用例。 - Itamar Haber