SCAN
扫一遍键空间,把全部匹配项一次返回;它不是游标迭代器(COUNT 与 TYPE 会被接受然后忽略,游标恒为 0)。
SCAN cursor [MATCH pattern] [COUNT count]
复杂度
每次调用都是 O(N),N 为整个键空间的 key 数 —— 这里没有增量遍历这回事。
复杂度与兼容性是从 kevy 的实现里读出来的,不是抄 Redis 的文档。有几条确实不一样 —— 它们看起来像笔误,但不是。
与 Redis 的兼容性
有差异
有差异:SCAN 不是游标迭代器。每次调用都会扫遍每个 shard 的整个键空间,然后带着游标 0 把所有匹配项一批返回,所以标准的 SCAN 循环跑完一个往返就结束了。COUNT 与 TYPE 会被接受然后忽略,MATCH 生效。Redis 那套增量推进、单次工作量有界、容忍 rehash 的保证,在这里一条都不存在。