我正在为我的产品创建 feed,很像 Facebook 的新闻 feed。
起初,我是通过一个列表来实现它的。
每个提要最多包含 30 个帖子并包含一堆评论。插入列表并修剪列表以保持最多只有 30 个帖子的事实很容易。一个细微差别是添加评论,但我遇到的真正大问题是如果有人要求删除帖子则删除帖子。无法保证帖子在其整个生命周期中保持不变。这让生活变得非常麻烦。我仍然没有一个好的解决方案来删除列表。
然后,我决定使用哈希值。哈希值很棒,因为它会按照帖子进入哈希值的时间顺序保持哈希值(因此,它基本上是按时间排序的)。此外,我可以轻松查找帖子、添加评论、删除帖子,然后继续我的一天。除此之外,我需要能够限制哈希中的帖子数量。有没有办法将列表的修剪方法复制到哈希?我希望从哈希中删除最旧的帖子。
也许,我仍然没有使用正确的数据结构?
最佳答案
哈希不是有序的数据结构,它肯定不会使您的 key 保持有序。您正在寻找的可能是 sorted set (它是字典(即哈希)和跳过列表的组合。只需使用时间戳作为排序集的分数。
您可以使用 ZREMRANGEBYRANK(按相对位置)或 ZREMRANGEBYSCORE(按时间戳的绝对值)轻松修剪排序集。
关于redis - 有没有办法用哈希来模拟列表的修剪功能?有没有更好的数据结构呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25453793/