Redis排序:如何按给定值对redis哈希键进行排序?

时间:2014-05-03 14:07:11

标签: mysql sorting twitter hash redis

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

  1. 更新用户帐户的时间(last_update)
  2. 最新的推文ID(latest_tweet_id)
  3. 最早的推文ID(earliest_tweet_id)
  4. 我想移动这些数据用redis来加快查询速度。以下是它的工作原理:

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

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

    1. 作为排序列表,其中last_update充当我的分数,user_id充当我的价值
    2. 有第二个哈希字段,其中键为user_ids
    3. 第二个解决方案需要查询我的排序列表中的最低(最少更新)user_id,然后使用user_id从散列数据集中获取tweet_ids。但是这会复制我的数据并且RAM很昂贵所以我正在寻找能够首先对哈希进行排序的解决方案。

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

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

1 个答案:

答案 0 :(得分:1)

方案2使用排序列表是首选解决方案。

排序集非常有效,最适合根据分数获取范围值,例如前n个值。