Redis 的 SMOVE 命令用于将 member 元素从 source 集合 移动到 destination 集合。SMOVE 是原子性操作。
如果 source 集合不存在或不包含指定的 member 元素,则 SMOVE 命令不执行任何操作,仅返回 0 。否则, member 元素从 source 集合中被移除,并添加到 destination 集合中去。
当 destination 集合已经包含 member 元素时,SMOVE 命令只是简单地将 source 集合中的 member 元素删除。当 source 或 destination 不是集合类型时,返回一个错误。
192.168.98.70:6379> SMOVE source destination member
参数 | 描述 |
---|---|
source | 源集合的键。 |
destination | 目的集合的键。 |
member | 要移动的元素。 |
如果 member 元素被成功移除,返回 1 。如果 member 元素不是 source 集合的成员,并且没有任何操作对 destination 集合执行,那么返回 0 。
O(1)
>= 1.0.0
member 不存在,不执行任何操作
192.168.98.70:6379> SADD haicoder Redis (integer) 1 192.168.98.70:6379> SADD hicoder Mongo (integer) 1 192.168.98.70:6379> SMOVE haicoder hicoder Sql (integer) 0 192.168.98.70:6379> SMEMBERS haicoder 1) "Redis" 192.168.98.70:6379> SMEMBERS hicoder 1) "Mongo" 192.168.98.70:6379> DEL haicoder (integer) 1 192.168.98.70:6379> DEL hicoder (integer) 1
我们首先,使用 SADD 命令,向键为 haicoder 的集合中添加元素 Redis。使用 SADD 命令,向键为 hicoder 的集合中添加元素 Mongo。
最后,我们使用 SMOVE 命令,将键为 haicoder 的集合中的元素 Sql 移动到键为 hicoder 的集合中,因为元素 Sql 不在源集合中,所以此时不执行任何操作。
member 存在,元素被从源集合移到目的集合
192.168.98.70:6379> SADD haicoder Redis Mongo (integer) 2 192.168.98.70:6379> SADD hicoder Sql (integer) 1 192.168.98.70:6379> SMOVE haicoder hicoder Redis (integer) 1 192.168.98.70:6379> SMEMBERS haicoder 1) "Mongo" 192.168.98.70:6379> SMEMBERS hicoder 1) "Redis" 2) "Sql" 192.168.98.70:6379> DEL haicoder hicoder (integer) 2
我们首先,使用 SADD 命令,向键为 haicoder 的集合中添加元素 Redis 和 Mongo。使用 SADD 命令,向键为 hicoder 的集合中添加元素 Sql。
接着,我们使用 SMOVE 命令,将键为 haicoder 的集合中的元素 Redis 移动到键为 hicoder 的集合中。使用 SMEMBERS 命令,获取键为 haicoder 的集合中的元素,只剩下 Mongo,而 Redis 元素已被移除。
最后,我们使用 SMEMBERS 命令,获取键为 hicoder 的集合中的元素,增加了元素 Redis,即元素 Redis 从集合 haicoder 移到了集合 hicoder。
member 在目标集合中存在,元素仅仅从源集合移除
192.168.98.70:6379> SADD haicoder Redis Mongo (integer) 2 192.168.98.70:6379> SADD hicoder Sql Redis (integer) 2 192.168.98.70:6379> SMOVE haicoder hicoder Redis (integer) 1 192.168.98.70:6379> SMEMBERS haicoder 1) "Mongo" 192.168.98.70:6379> SMEMBERS hicoder 1) "Redis" 2) "Sql" 192.168.98.70:6379> DEL haicoder hicoder (integer) 2
我们首先,使用 SADD 命令,向键为 haicoder 的集合中添加元素 Redis 和 Mongo。使用 SADD 命令,向键为 hicoder 的集合中添加元素 Sql 和 Redis。
接着,我们使用 SMOVE 命令,将键为 haicoder 的集合中的元素 Redis 移动到键为 hicoder 的集合中。使用 SMEMBERS 命令,获取键为 haicoder 的集合中的元素,只剩下 Mongo,而 Redis 元素已被移除。
最后,我们使用 SMEMBERS 命令,获取键为 hicoder 的集合中的元素,集合中的元素未有任何改变。
Redis 的 SMOVE 命令用于将 member 元素从 source 集合移动到 destination 集合。Redis SMOVE 命令语法:
192.168.98.70:6379> SMOVE source destination member