我有一个大的redis SET(超过6M条目),我需要遍历所有条目并对每个条目进行一些其他redis操作(主要使用基于原始条目的密钥在redis排序集中调用ZCARD).
通过SET的所有条目,哪种方式最有效(在资源方面)?使用SSCAN或进行SMEMEBERS调用.
SMEMBERS在一次操作中返回SET中的所有成员.该操作的持续时间与SET中的项目数量成正比(时间复杂度:O(N)).
在此操作期间,您的实例不会响应任何其他请求.
SSCAN允许您遍历SET中的所有项目.时间复杂度是固定的(O(1)),具体取决于您在每次调用时获得的项目数(此数字由COUNT参数定义).SSCAN的总成本可能与SMEMBERS的成本相同,或者更高,因为您必须拨打多个电话.但它允许在两次调用之间处理其他请求,因此您的Redis实例看起来不会响应.
所有这些都是纯粹的理论.要获得明确的建议,您应该进行测试和测量,这应该是相当容易的.
| 归档时间: |
|
| 查看次数: |
1639 次 |
| 最近记录: |