*Redis SSCAN 命令

以游标方式分批遍历 Set 中的成员。


*语法

SSCAN key cursor [MATCH pattern] [COUNT count]

*参数说明

参数 类型 必填 说明
key String Set 的键名
cursor Integer 游标,首次为 0
MATCH String 匹配成员名,glob 风格
COUNT Integer 扫描提示数量

*返回值

返回 [next_cursor, [member1, member2, ...]]


*时间复杂度

O(1) 每次调用 + O(N) 返回 N 个成员。


*示例

> SADD myset user1 user2 user3 admin1 admin2
(integer) 5

> SSCAN myset 0
1) "0"
2) 1) "user1"
   2) "admin1"
   3) "user2"
   4) "admin2"
   5) "user3"

# 带 MATCH 过滤
> SSCAN myset 0 MATCH user*
1) "0"
2) 1) "user1"
   2) "user2"
   3) "user3"

*常见错误

  1. 用 SMEMBERS 遍历大 Set:生产环境大 Set 必须用 SSCAN。

*最佳实践

  1. 大 Set 遍历:成员 > 5000 时禁用 SMEMBERS,用 SSCAN 分批。
  2. 定期清理:SSCAN + SREM 分批删除符合条件的成员。

*FAQ

Q: SSCAN 和 SMEMBERS 有什么区别? A: 同 SCANKEYS 的区别。SSCAN 不阻塞,SMEMBERS 大 Set 会阻塞。