【问题标题】:Keep set members sorted in Redis保持集合成员在 Redis 中排序
【发布时间】:2014-02-10 19:28:37
【问题描述】:

我正在编写一个 IM 系统。

我正在使用 Redis 和 JSON 来存储数据。我有一个带有对话 ID 的 Redis 集。当我检索它们时,我想获取按消息时间戳排序的列表:

conversation 9  -> last message timestamp: 1390300000
conversation 12 -> last message timestamp: 1390200000
conversation 7  -> last message timestamp: 1390100000

我有一个包含每个用户参与的对话的集合 (user1337:conversations) 和一个包含每个对话的 JSON 编码消息的列表 (conversation1234:messages) .

我想不需要技巧,因此可以使用 Redis 本地完成。您将如何实现这一目标?

【问题讨论】:

    标签: nosql redis instant-messaging


    【解决方案1】:

    听起来像 Sorted Set 正是您所需要的。

    您可以将每个对话的 时间戳 设置为其分数(请参阅 ZADD),然后您可以使用 ZRANGEZRANGEBYSCOREZREVRANGEZREVRANGEBYSCORE.

    【讨论】:

    • 非常感谢。我之前尝试过 Sorted Sets,但我没有直接设置时间戳。
    • @OrioldelRio 听起来像是排序集的完美案例,Redis 内置了它们真是太好了:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-06
    • 1970-01-01
    • 2011-04-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多