【发布时间】:2020-05-10 11:54:41
【问题描述】:
在我的 Go 程序中,我正在使用一个名为 MyEntries 的 Redis 排序集,它包含三个元素:EntryA、EntryB 和 EntryC,排名为 1、2 和 3(等等..)。
一切都是有序的,元素也是独一无二的(这就是我不使用 LIST 的原因)。
但是问题是当排名顺序显然不再是 如果 一个元素被删除!例如,如果我删除 EntryB,EntryC 的排名仍然为 3(而不是 2)。
我知道我基本上可以按索引查询,因为索引号确实会动态变化。但不幸的是,我刚刚发现 Redis 无法按元素名称查询索引。
您能帮我解决这个问题吗?如果删除了一个元素,Redis 中是否有任何方法可以动态更新 Sorted Sets 中的排名?
PS 我正在构建一个 FIFO 排队程序,使用户能够也从队列中移除元素(除了最旧的先离开)。您还想知道您在队列中的位置(这就是我遇到此排名更新问题的原因)。
【问题讨论】:
-
no way in Redis to query index by element name是什么意思?您的查询是什么?获取给定元素的排名? -
所以他们在这里讨论:stackoverflow.com/questions/8899111/… 我在文档中也找不到任何关于它的内容..(命令参考页面)
-
那
zrankredis.io/commands/zrank -
我正在使用它。但这让我想到了我上面描述的问题!如果我删除一个元素怎么办......新元素的排名应该改变!
-
我添加了一个可能的解决方案作为答案,包括添加、删除、排名、所有列表等。