有没有办法模仿带有哈希的列表的修剪功能?有没有更好的数据结构?

时间:2014-08-22 18:55:59

标签: redis

我正在为我的产品创建Feed,就像Facebook的新闻源一样。

起初,我是通过列表实现的。

每个Feed最多有30个帖子&并举行了一堆评论。推进列表并修剪列表以保持最多只有30个帖子的事实很容易。一个细微差别是添加评论,但我真正的大问题是删除帖子,如果有人请求删除。无法保证帖子在其整个生命周期内保持不变。这使生活变得非常麻烦。我仍然没有一个很好的解决方案来删除列表。

然后,我决定使用哈希。散列是很好的,因为它将按照帖子输入散列的顺序保持散列(因此,它基本上按时间排序)。此外,我可以轻松查找帖子,添加评论,删除它并继续我的一天。除此之外,我需要能够限制散列中的帖子数量。有没有办法将列表的trim方法复制到哈希?我希望从哈希中删除最旧的帖子。

也许,我还没有使用正确的数据结构?

1 个答案:

答案 0 :(得分:1)

哈希不是一种有序的数据结构,它肯定不会使您的密钥保持有序。您正在寻找的可能是sorted set(它是字典(即哈希)和跳过列表的组合。只需使用时间戳作为排序集的分数。

您可以使用ZREMRANGEBYRANK(通过相对位置)或ZREMRANGEBYSCORE(通过时间戳的绝对值)轻松修剪有序集。