【发布时间】:2019-02-16 04:53:47
【问题描述】:
我有一个庞大的 Twitter 用户数据库。基本上我需要为每个用户保存三个值。
- 更新用户帐户的时间 (last_update)
- 最新推文 ID (latest_tweet_id)
- 最早的推文 id (earliest_tweet_id)
我想将这些数据移到 redis 中以加快查询速度。以下是它的工作原理:
场景一
每次我更新/检查用户的个人资料时,我都需要保存此更新的时间。同时,我需要捕获用户最新和最早的推文 id(如果它们已更改)。这一点很简单,我可以弄清楚 redis 哈希是如何轻松管理这种数据的。然而,我的困境是如何保持这些哈希按last_update 值排序,以便我可以首先获取更新最少的记录,然后以循环方式轮换所有记录。
场景二 我的另一个选择是保存数据两次:
- 作为排序列表,其中 last_update 作为我的分数,
user_id作为我的值 - 有第二个哈希字段,其中键为
user_ids
第二个解决方案将需要查询我的排序列表以获得最低(最少更新)user_id,然后使用该user_id 从散列数据集中获取tweet_ids。但这会复制我的数据并且 RAM 很昂贵,所以我正在寻找一种能够首先对哈希进行排序的解决方案。
目前,这些查询是通过 MySQL 执行的,我没有尝试任何一种解决方案,因为我找不到第一个首选方案的好答案。
我们将不胜感激任何见解解决方案。谢谢。
【问题讨论】:
标签: mysql sorting twitter hash redis