这可能更多是一个理论问题,但我正在寻找实用的答案。
我计划使用Redis的有序集合来存储基于计算值的模型在我的数据库中的排名。目前我的数据集很小(集合中有250个成员)。我想知道有序集合是否能扩展到5,000个或更大的成员。Redis声称最大值为1GB,而我的值是模型的ID,因此我并不担心有序集合值的可扩展性。
ZRANGE 的时间复杂度为O(log(N)+M)。如果我经常尝试从集合中获取前5个排名最高的项目,则N个集合项中的log(N)可能是一个问题。
我还计划使用ZINTERSTORE,其时间复杂度为O(N*K)+O(M*log(M))。我计划经常使用ZINTERSTORE,并使用ZRANGE 0 -1检索结果。
我想问的问题有两个。
- Redis有序集合能够扩展到5,000个成员吗?10,000个?50,000个?
- 当应用于大型集合时,ZRANGE和ZINTERSTORE(与ZRANGE结合使用)是否会出现性能问题?