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

问题描述 投票:1回答:1

我有一个庞大的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个回答
1
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.