【问题标题】:Redis Sorting: How do I sort a redis hash key by given value?Redis 排序:如何按给定值对 redis 哈希键进行排序?
【发布时间】:2019-02-16 04:53:47
【问题描述】:

我有一个庞大的 Twitter 用户数据库。基本上我需要为每个用户保存三个值。

  1. 更新用户帐户的时间 (last_update)
  2. 最新推文 ID (latest_tweet_id)
  3. 最早的推文 id (earliest_tweet_id)

我想将这些数据移到 redis 中以加快查询速度。以下是它的工作原理:

场景一 每次我更新/检查用户的个人资料时,我都需要保存此更新的时间。同时,我需要捕获用户最新和最早的推文 id(如果它们已更改)。这一点很简单,我可以弄清楚 redis 哈希是如何轻松管理这种数据的。然而,我的困境是如何保持这些哈希按last_update 值排序,以便我可以首先获取更新最少的记录,然后以循环方式轮换所有记录。

场景二 我的另一个选择是保存数据两次:

  1. 作为排序列表,其中 last_update 作为我的分数,user_id 作为我的值
  2. 有第二个哈希字段,其中键为user_ids

第二个解决方案将需要查询我的排序列表以获得最低(最少更新)user_id,然后使用该user_id 从散列数据集中获取tweet_ids。但这会复制我的数据并且 RAM 很昂贵,所以我正在寻找一种能够首先对哈希进行排序的解决方案。

目前,这些查询是通过 MySQL 执行的,我没有尝试任何一种解决方案,因为我找不到第一个首选方案的好答案。

我们将不胜感激任何见解解决方案。谢谢。

【问题讨论】:

    标签: mysql sorting twitter hash redis


    【解决方案1】:

    使用排序列表的场景二是首选方案。

    排序集是高效的,最适合根据分数获取范围值,例如前 n 个值。

    【讨论】:

    • 你可能想补充一下为什么会这样
    • 排序集是高效的,最适合根据分数获取范围值,例如前 n 个值
    • 您可能希望在答案中添加它以使其更健壮
    • 知道了。谢谢。
    猜你喜欢
    • 2011-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-09
    • 2015-06-25
    • 1970-01-01
    相关资源
    最近更新 更多