我正在尝试使用Redis创建一个JSON对象队列。
我目前使用ZADD创建一个有序集:
var entry = {"name": "Hank", "question": "Where am I?"};
client.zadd("entries", 1, JSON.stringify(entry));
每次有新条目时,如何增加分数?
答案 0 :(得分:0)
如果您正在尝试创建一个队列,其中新项目将添加到队列的顶部,那么您可能根本不需要排序集。
排序集非常有用,您可以获得具有不同分数的列表,例如视频游戏的排行榜,或者最佳居住地的排名。如果您询问如何增加现有条目的分数,这很容易,您只需使用新分数再次添加即可。因此,client.zadd("entries", 2, JSON.stringify(entry));
会将得分更新为2.来自redis.io:
将具有指定分数的所有指定成员添加到已排序的成员 设置存储在密钥。如果指定的成员已经是该成员 排序集,分数更新,元素重新插入 正确的位置,以确保正确的订购。
听起来好像在询问如何在向集合添加新项目时增加所有现有项目的分数。这就像将每个现有项目“推”到一个位置并将新项目放在顶部。这不是排序集的用途,正是redis列表的用途。而且,推动正是你要做的。使用LPUSH
在列表中添加元素。