*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

*常见错误

  1. 对非 Set 使用:返回 WRONGTYPE。

*最佳实践

  1. Set 间转移:将元素从一个 Set 移动到另一个 Set,原子操作保证数据一致性。

*FAQ

Q: SMOVE 和 SUNION/SINTER 有什么区别? A: SMOVE 移动单个元素;SUNION/SINTER 计算集合的并集/交集。SMOVE 是原子操作,修改源和目标 Set。