【Redis】RCMD 05 Set 无序集合
1、SET写入命令:
SADD key-name value1 value2 ...
演示:
127.0.0.1:6379> SADD S AAA BBB CCC DDD (integer) 4 127.0.0.1:6379>
2、SET读取命令:
SMEMBERS key-name
演示:
127.0.0.1:6379> SMEMBERS S 1) "BBB" 2) "AAA" 3) "DDD" 4) "CCC" 127.0.0.1:6379>
3、读取成员个数:
SCARD key-name
演示:
127.0.0.1:6379> SCARD S (integer) 4 127.0.0.1:6379>
4、随机获取SET成员
SRANDMEMBER key-name integer-param
演示:
127.0.0.1:6379> SRANDMEMBER S 3 1) "AAA" 2) "BBB" 3) "CCC" 127.0.0.1:6379> SRANDMEMBER S 3 1) "AAA" 2) "BBB" 3) "CCC" 127.0.0.1:6379> SRANDMEMBER S 3 1) "AAA" 2) "BBB" 3) "DDD" 127.0.0.1:6379> SRANDMEMBER S 3 1) "AAA" 2) "CCC" 3) "DDD" 127.0.0.1:6379>
描述:
1、随机参数为正整数时,随机获取指定参数的成员个数,并且成员不重复出现,如果参数大于成员个数,直接获取全部成员
2、反之,如果随机参数为负整数,则获取的成员会出现重复
演示2:
127.0.0.1:6379> SRANDMEMBER S -3 1) "BBB" 2) "CCC" 3) "CCC" 127.0.0.1:6379> SRANDMEMBER S -3 1) "CCC" 2) "BBB" 3) "AAA" 127.0.0.1:6379> SRANDMEMBER S -3 1) "DDD" 2) "AAA" 3) "CCC" 127.0.0.1:6379> SRANDMEMBER S -3
5、从SET右侧移除成员
弹栈,并将其成员返回
SPOP key-name count-param
演示:
127.0.0.1:6379> SPOP S "CCC" 127.0.0.1:6379>
弹出指定个数:
127.0.0.1:6379> SPOP S 2 1) "BBB" 2) "AAA" 127.0.0.1:6379> SMEMBERS S 1) "DDD" 127.0.0.1:6379>
6、将指定的成员移动到一个新的SET中:
SMOVE origin-key moved-key member
演示:
127.0.0.1:6379> SADD S1 M1 M2 M3 M4 M5 (integer) 5 127.0.0.1:6379> SADD S2 M21 M22 M23 M24 M25 (integer) 5 127.0.0.1:6379> SMOVE S1 S2 M3 (integer) 1 127.0.0.1:6379> SMEMBERS S1 1) "M2" 2) "M5" 3) "M4" 4) "M1" 127.0.0.1:6379> SMEMBERS S2 1) "M24" 2) "M23" 3) "M21" 4) "M3" 5) "M25" 6) "M22" 127.0.0.1:6379>
6、比较多个SET之间不同的元素
SDIFF key-name1 key-name2 ...
演示:
首先这里声明了三个SET:S1,S2,S3。
它们都具备三个同样的成员和三个不一样的成员:
127.0.0.1:6379> SADD S1 1 2 3 4 5 6 (integer) 6 127.0.0.1:6379> SADD S2 1 2 3 7 8 9 (integer) 6 127.0.0.1:6379> SADD S3 1 2 3 10 11 12 (integer) 6
我们取S1 & S2 进行比较:
127.0.0.1:6379> SDIFF S1 S2 1) "4" 2) "5" 3) "6"
发现返回的是S1中存在,但是S2所没有的成员,
说明这是把S1 给 S2 进行比较,也就是说命令中是把参数1的SET给参数2进行比较
然后,比较命令还允许加入多个SET参数
127.0.0.1:6379> SDIFF S1 S2 S3 1) "4" 2) "5" 3) "6"
这还是同样的结果,也就是说是将参数一的SET给后面的所有参数SET进行比较?
这里新追加一个S4,结果:确实如此
127.0.0.1:6379> SADD S4 1 2 3 4 13 14 (integer) 6 127.0.0.1:6379> SDIFF S1 S2 S4 1) "5" 2) "6"
7、将上述的差集命令读取到的成员存储到新SET中
SDIFFSTORE new-set-key compare-key-1 compare-key-2 ...
演示:
127.0.0.1:6379> SDIFFSTORE S5 S1 S2 S3 (integer) 3 127.0.0.1:6379> SMEMBERS S5 1) "4" 2) "5" 3) "6" 127.0.0.1:6379>
8、取SET交集
SINTER param-key-1 param-key-2 ...
演示:
127.0.0.1:6379> SINTER S1 S2 S3 S4
1) "1"
2) "2"
3) "3"
9、取交集并且写入新SET中
SINTERSTORE store-set-key param-key-1 param-key-2 ...
允许对SET进行覆写
127.0.0.1:6379> SINTERSTORE S1 S2 S3 S4 (integer) 3 127.0.0.1:6379> SMEMBERS S1 1) "1" 2) "2" 3) "3" 127.0.0.1:6379>
10、取全SET并集:
127.0.0.1:6379> SUNION S1 S2 S3 S4 S5 1) "1" 2) "2" 3) "3" 4) "4" 5) "5" 6) "6" 7) "7" 8) "8" 9) "9" 10) "10" 11) "11" 12) "12" 13) "13" 14) "14"
同样的存储写入:
127.0.0.1:6379> SUNIONSTORE S6 S1 S2 S3 S4 S5 (integer) 14 127.0.0.1:6379> SMEMBERS S6 1) "1" 2) "2" 3) "3" 4) "4" 5) "5" 6) "6" 7) "7" 8) "8" 9) "9" 10) "10" 11) "11" 12) "12" 13) "13" 14) "14"

浙公网安备 33010602011771号