我有一个很大的redis SET(超过6M个条目),我需要遍历所有条目并对每个条目进行其他一些redis操作(主要是使用基于原始条目的键在redis Sorted Set中调用ZCARD)。
哪种方式(就资源而言)是遍历SET的所有条目的最有效方式?使用SSCAN或执行SMEMEBERS调用。
SMEMBERS通过一次操作返回SET中的所有成员。此操作的持续时间与SET中的项目数成正比(时间复杂度:O(N))。
在此操作过程中,您的实例将不会响应任何其他请求。
SSCAN允许您遍历SET中的所有项目。时间复杂度是固定的(O(1)),具体取决于每次调用时获得的项数(此数字由COUNT参数定义)。SSCAN的总费用可能与SMEMBERS的费用相同,或者可能更高,因为您必须打多个电话。但是它将允许在两个调用之间处理其他请求,因此您的Redis实例不会显得无响应。
所有这些都是纯理论。要获得明确的建议,您应该测试和测量,这应该很容易做到。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句