0

我正在尝试使用 Redis 创建一个 JSON 对象队列。

我目前使用 ZADD 创建有序集:

var entry = {"name": "Hank", "question": "Where am I?"};
client.zadd("entries", 1, JSON.stringify(entry));

每次有新条目时如何增加分数?

4

1 回答 1

0

如果您尝试创建一个队列,其中新项目被添加到队列的顶部,那么您可能根本不需要排序集。

排序集在您拥有具有不同分数的事物列表时非常有用,例如视频游戏的排行榜或最佳居住地的排名。如果您询问如何增加现有条目的分数,这很容易,您只需使用新分数再次添加即可。因此,client.zadd("entries", 2, JSON.stringify(entry));将分数更新为 2。来自redis.io

将具有指定分数的所有指定成员添加到存储在 key 的排序集中。如果指定的成员已经是排序集的成员,则更新分数并将元素重新插入到正确的位置以确保正确的排序。

听起来好像您在向集合中添加新项目时询问如何增加所有现有项目的分数。这就像将这些现有项目中的每一个“推”到一个位置并将新的项目放在顶部。这不是排序集的用途,而正是 redis 列表的用途。而且,推动正是你会做的。用于LPUSH在列表中添加元素。

于 2013-10-12T02:17:51.973 回答