*Redis ZDIFF 命令

返回多个 Sorted Set 的差集(按第一个集合减去后续集合)。Redis 6.2+ 引入。


*语法

ZDIFF numkeys key [key ...] [WITHSCORES]

*参数说明

参数 类型 必填 说明
numkeys Integer key 的数量
key String Sorted Set 键名,第一个为被减集合
WITHSCORES 标志 同时返回 score

*返回值

条件 返回值
有差集 member 数组;WITHSCORES 时 [member, score, ...]
无差集 空数组 []

*时间复杂度

O(N*log(M)),N 为最小集合大小,M 为最大集合大小。


*示例

> ZADD zset1 1 a 2 b 3 c
(integer) 3
> ZADD zset2 1 b 2 c 3 d
(integer) 3

> ZDIFF 2 zset1 zset2
1) "a"

> ZDIFF 2 zset1 zset2 WITHSCORES
1) "a"
2) "1"

*常见错误

  1. numkeys 与实际 key 数量不匹配:返回错误。

*最佳实践

  1. 差集计算:计算只属于某个集合的成员,如"只在今日排行榜但不在昨日排行榜的用户"。

*FAQ

Q: ZDIFF 和 SDIFF 有什么区别? A: ZDIFF 操作 Sorted Set;SDIFF 操作 Set。ZDIFF 保留第一个集合的 score。