1. SMOVE source destination member
起始版本:1.0.0
时间复杂度:O(1)
将 member 元素从 source 集合移动到 destination 集合。
SMOVE 是原子性操作
如果 source 集合不存在或不包含指定的 member 元素,则 SMOVE 命令不执行任何操作,仅返回 0 。否则, member 元素从 source 集合中被移除,并添加到 destination 集合中去。
当 destination 集合已经包含 member 元素时, SMOVE 命令只是简单地将 source 集合中的 member 元素删除。
当 source 或 destination 不是集合类型时,返回一个错误。
1.1. 返回值
被添加到集合中的新元素的数量,不包括被忽略的元素。
1.2. demo
# source 不存在, destination 也不存在, 返回 0 , 不做任何操作
127.0.0.1:6379> EXISTS sset1
(integer) 0
127.0.0.1:6379> EXISTS sset2
(integer) 0
127.0.0.1:6379> SMOVE sset1 sset2 a
(integer) 0
# source 不存在, destination 存在, 返回 0 , 不做任何操作
127.0.0.1:6379> SMEMBERS myset
1) "b"
2) "a"
127.0.0.1:6379> SMOVE sset1 myset a
(integer) 0
127.0.0.1:6379> SMEMBERS myset
1) "b"
2) "a"
# source 存在, destination 不存在,
127.0.0.1:6379> SMOVE myset sset1 a
(integer) 1
127.0.0.1:6379> SMEMBERS myset
1) "b"
127.0.0.1:6379> SMEMBERS sset1
1) "a"
# 正常移动
127.0.0.1:6379> SMEMBERS sset1
1) "d"
2) "b"
3) "c"
4) "a"
127.0.0.1:6379> SMEMBERS sset2
1) "b"
2) "c"
127.0.0.1:6379> SMOVE sset1 sset2 a
(integer) 1
127.0.0.1:6379> SMEMBERS sset1
1) "d"
2) "b"
3) "c"
127.0.0.1:6379> SMEMBERS sset2
1) "b"
2) "c"
3) "a"
# destination 中已存在 member元素, 简单的从 source中移除 member
127.0.0.1:6379> SMOVE sset1 sset2 b
(integer) 1
127.0.0.1:6379> SMEMBERS sset1
1) "d"
2) "c"
127.0.0.1:6379> SMEMBERS sset2
1) "b"
2) "c"
3) "a"
# 如果指定的key不是hash类型,返回错误
127.0.0.1:6379> TYPE key1
string
127.0.0.1:6379> SMOVE sset1 key1
(error) ERR wrong number of arguments for 'smove' command
127.0.0.1:6379> SMOVE key1 sset1
(error) ERR wrong number of arguments for 'smove' command