我正在为我的产品创建Feed,就像Facebook的新闻源一样。
起初,我是通过列表实现的。
每个Feed最多有30个帖子&并举行了一堆评论。推进列表并修剪列表以保持最多只有30个帖子的事实很容易。一个细微差别是添加评论,但我真正的大问题是删除帖子,如果有人请求删除。无法保证帖子在其整个生命周期内保持不变。这使生活变得非常麻烦。我仍然没有一个很好的解决方案来删除列表。
然后,我决定使用哈希。散列是很好的,因为它将按照帖子输入散列的顺序保持散列(因此,它基本上按时间排序)。此外,我可以轻松查找帖子,添加评论,删除它并继续我的一天。除此之外,我需要能够限制散列中的帖子数量。有没有办法将列表的trim方法复制到哈希?我希望从哈希中删除最旧的帖子。
也许,我还没有使用正确的数据结构?
答案 0 :(得分:1)
哈希不是一种有序的数据结构,它肯定不会使您的密钥保持有序。您正在寻找的可能是sorted set(它是字典(即哈希)和跳过列表的组合。只需使用时间戳作为排序集的分数。
您可以使用ZREMRANGEBYRANK(通过相对位置)或ZREMRANGEBYSCORE(通过时间戳的绝对值)轻松修剪有序集。