在redis中处理多个列表的最佳方法是什么?

时间:2013-12-29 01:59:19

标签: redis

我正在建立一个网站,允许用户查看和做一些文章的活动(投票,评论......)。我使用MySql作为主存储。为了提高性能,我正在考虑使用Redis (4.x)来处理一些视图活动,例如热门/热门文章......

我将使用一个名为topAticleSortedSet的sortedSet来存储热门文章,每当用户对某篇文章投票或提出异议时,此集就会经常更新。

由于每个用户都会登录并关注某些主题,因此我还需要根据用户的以下主题在topArticleSortedSet中过滤和显示文章。

当然还有滚动分页。

出于这些原因,我打算为每个用户创建一个topArticleSortedSet,每个用户都有一个独立的列表。但我不知道这是否是最佳实践,因为在我的网站中可能有数百万登录用户访问(然后它将是数百万集,每个约1000个文章项目。)

有人可以给我一些建议吗?

1 个答案:

答案 0 :(得分:1)

我认为你应该保留一个Set,并为每个用户过滤它,而不是每个用户设置一个。原因如下:

我的理解是每次有人阅读文章时都必须更新该集(可能会增加一个计数器)。

假设您有n个用户,每个用户每天阅读p篇文章。所以你必须每天更新Set n * p次。

在“单个”设置选项中,您需要在阅读文章时更新一个集合。所以它总共进行了n * p更新。在“每用户一套”架构中,您需要进行更大的n * p * n更新。

当然,过滤单个Set会花费一些时间,比访问为一个用户设计的Set更长。但平均而言,我认为这比n次操作花费的时间少得多。 基本上,你需要知道哪个更快:过滤一套或更新n套?