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

1.3. 参考

Copyright © wychuan.com 2017 all right reserved,powered by Gitbook该文件修订时间: 2017-10-17 02:48:52

results matching ""

    No results matching ""