【问题标题】:Node & Redis queue节点和 Redis 队列
【发布时间】:2013-10-20 04:01:10
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: node.js redis queue node-redis


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 太棒了。谢谢。我是 redis 新手,不知何故错过了 LPUSH。
    猜你喜欢
    • 2020-06-08
    • 1970-01-01
    • 2013-04-04
    • 2018-09-03
    • 2020-03-25
    • 1970-01-01
    • 1970-01-01
    • 2015-06-04
    • 1970-01-01
    相关资源
    最近更新 更多