Redis SMOVE命令

Redis SMOVE命令教程

Redis 的 SMOVE 命令用于将 member 元素从 source 集合 移动到 destination 集合。SMOVE 是原子性操作。

如果 source 集合不存在或不包含指定的 member 元素,则 SMOVE 命令不执行任何操作,仅返回 0 。否则, member 元素从 source 集合中被移除,并添加到 destination 集合中去。

当 destination 集合已经包含 member 元素时,SMOVE 命令只是简单地将 source 集合中的 member 元素删除。当 source 或 destination 不是集合类型时,返回一个错误。

Redis SMOVE命令详解

语法

192.168.98.70:6379> SMOVE source destination member

参数

参数 描述
source 源集合的键。
destination 目的集合的键。
member 要移动的元素。

返回值

如果 member 元素被成功移除,返回 1 。如果 member 元素不是 source 集合的成员,并且没有任何操作对 destination 集合执行,那么返回 0 。

时间复杂度

O(1)

可用版本

>= 1.0.0

案例

member不存在

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存在

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在目标集合中存在

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命令教程

Redis 的 SMOVE 命令用于将 member 元素从 source 集合移动到 destination 集合。Redis SMOVE 命令语法:

192.168.98.70:6379> SMOVE source destination member