Redis SMOVE命令的作用是将一个集合中的成员移动到另一个集合中。
SMOVE命令的基本语法为:
SMOVE sourceSet destSet member
其中,sourceSet是源集合的名称,destSet是目标集合的名称,member是要移动的成员。
使用SMOVE命令可以实现以下功能:
将一个集合中的成员移动到另一个集合中,例如:
sadd set1 a b c
sadd set2 x y z
smove set1 set2 b
执行以上命令后,set1中的成员b将被移动到set2中,set1中仅剩下a和c两个成员。
去除集合中的重复成员,例如:
sadd set1 a b c
sadd set2 b c d
smove set1 set2 a
执行以上命令后,set2中的成员仅为b、c和d,a被移除了。
需要注意的是,SMOVE命令只能用于集合之间的成员移动,如果要将成员从有序集合或列表中移动到集合中,需要先将其添加到集合中再进行移动。
另外,如果源集合中不存在要移动的成员,SMOVE命令将不会进行任何操作。
下面提供两个实例:
将一个集合中的成员移动到另一个集合中
sadd set1 a b c d e
sadd set2 a b c
smove set1 set2 d
smembers set1 // 输出结果: a, b, c, e
smembers set2 // 输出结果: a, b, c, d
上述实例中,集合set1中有a、b、c、d和e五个成员,集合set2中有a、b和c三个成员。使用SMOVE命令将set1中的d成员移动到set2中后,set1中仅剩下a、b、c和e四个成员,set2中增加了一个成员d。
去除集合中的重复成员
sadd set1 a b c d e
sadd set2 a b c
sadd set3 c d e
smove set1 set2 a
smove set1 set3 d
smembers set1 // 输出结果: b, c, e
smembers set2 // 输出结果: a, b, c
smembers set3 // 输出结果: c, d, e
上述实例中,集合set1中有a、b、c、d和e五个成员,集合set2中有a、b和c三个成员,集合set3中有c、d和e三个成员。通过两次使用SMOVE命令将set1中的a和d成员移动到set2和set3中后,set1中仅剩下b、c和e三个成员,set2中不增加成员,set3中增加了一个成员d。