*Redis SMOVE 命令
将元素从源 Set 移动到目标 Set。原子操作,如果元素在源 Set 中不存在则不执行。
*语法
SMOVE source destination member
*参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| source | String | 是 | 源 Set 键名 |
| destination | String | 是 | 目标 Set 键名 |
| member | String | 是 | 要移动的元素 |
*返回值
| 条件 | 返回值 |
|---|---|
| 移动成功 | 1 |
| member 不在 source 中 | 0 |
*时间复杂度
O(1)
*
*示例
> SADD set1 a b c
(integer) 3
> SADD set2 x y
(integer) 2
> SMOVE set1 set2 a
(integer) 1
> SMEMBERS set1
1) "b"
2) "c"
> SMEMBERS set2
1) "a"
2) "x"
3) "y"
# 移动不存在的元素
> SMOVE set1 set2 z
(integer) 0
*常见错误
- 对非 Set 使用:返回 WRONGTYPE。
*最佳实践
- Set 间转移:将元素从一个 Set 移动到另一个 Set,原子操作保证数据一致性。
*FAQ
Q: SMOVE 和 SUNION/SINTER 有什么区别? A: SMOVE 移动单个元素;SUNION/SINTER 计算集合的并集/交集。SMOVE 是原子操作,修改源和目标 Set。