13 Appendix More Set Operation Commands

13 Appendix More Set Operation Commands #

Remove and return a random element from a set #

Syntax: spop key [count] Example:

127.0.0.1:6379> smembers myset
1) "v1"
2) "v2"
127.0.0.1:6379> spop myset 1
1) "v2"
127.0.0.1:6379> smembers myset
1) "v1"

Return a specified number of random elements from a set #

Syntax: srandmember key [count] Example:

127.0.0.1:6379> srandmember myset 2
1) "v4"
2) "v2"

Return the intersection of one or more sets #

Syntax: sinter key [key …] Example:

127.0.0.1:6379> smembers myset
1) "v1"
2) "v3"
3) "v2"
127.0.0.1:6379> smembers myset2
1) "v1"
2) "v8"
127.0.0.1:6379> sinter myset myset2
1) "v1"

Copy the intersection of sets to a new set #

Syntax: sinterstore destination key [key …] Example:

127.0.0.1:6379> smembers myset
1) "v1"
2) "v3"
3) "v2"
127.0.0.1:6379> smembers myset2
1) "v1"
2) "v8"
127.0.0.1:6379> sinterstore myset3 myset myset2
(integer) 1
127.0.0.1:6379> smembers myset3
1) "v1"

Command explanation: From the code above, we can see that we copy the intersection element “v1” of set myset and set myset2 to a new set myset3, but “v1” is not removed from the original sets.

Query the union of one or more sets #

Syntax: sunion key [key …] Example:

127.0.0.1:6379> smembers group1
1) "java"
127.0.0.1:6379> smembers group2
1) "golang"
127.0.0.1:6379> sunion group1 group2
1) "java"
2) "golang"

Copy the union of one or more sets to a new set #

Syntax: sunionstore destination key [key …] Example:

127.0.0.1:6379> smembers group1
1) "java"
127.0.0.1:6379> smembers group2
1) "golang"
127.0.0.1:6379> sunionstore group3 group1 group2
(integer) 2
127.0.0.1:6379> smembers group3
1) "java"
2) "golang"

Note: Only copy the union of one or more sets to a new set, the elements are not removed from the original sets.

Query the difference of one or more sets #

Syntax: sdiff key [key …] Example:

127.0.0.1:6379> smembers group1
1) "java"
2) "golang"
127.0.0.1:6379> smembers group2
1) "golang"
127.0.0.1:6379> sdiff group1 group2
1) "java"

Note: The order of sets in the command will affect the result, as shown below:

127.0.0.1:6379> sdiff group1 group2
1) "java"
127.0.0.1:6379> sdiff group2 group1
(empty list or set)

This is because when querying the difference, the first set is the main reference. When the second set contains the elements of the first set, the result of the difference query will be empty.

Copy the difference of one or more sets to a new set #

Syntax: sdiffstore destination key [key …] Example:

127.0.0.1:6379> smembers group1
1) "java"
2) "golang"
127.0.0.1:6379> smembers group2
1) "golang"
127.0.0.1:6379> sdiffstore group3 group1 group2
(integer) 1
127.0.0.1:6379> smembers group3
1) "java"