redis之set 集合命令详解

来源:互联网 发布:如何生成数据字典 编辑:程序博客网 时间:2024/05/18 02:14

  • 集合 set 相关命令
    • sadd key value1 value2
        • 作用 往集合key中增加元素
        • srem value1 value2
        • spop key
        • srandmember key
        • sismember key value
        • smembers key
        • scard key
        • smove source dest value
        • sinter key1 key2 key3
        • sinterstore dest key1 key2 key3
        • sunion key1 key2 Keyn
        • sdiff key1 key2 key3

集合 set 相关命令

集合的性质: 唯一性,无序性,确定性
注: 在string和link的命令中,可以通过range 来访问string中的某几个字符或某几个元素
但,因为集合的无序性,无法通过下标或范围来访问部分元素.
因此想看元素,要么随机先一个,要么全选

sadd key value1 value2

作用: 往集合key中增加元素

<?php$redis->sAdd('k', 'v1');// int(1)$redis->sAdd('k', 'v1', 'v2', 'v3');// int(2)

srem value1 value2

作用: 删除集合中集为 value1 value2的元素
返回值: 忽略不存在的元素后,真正删除掉的元素的个数

<?phpvar_dump( $redis->sAdd('k', 'v1', 'v2', 'v3') );// int(3)var_dump( $redis->sRem('k', 'v2', 'v3') );// int(2)var_dump( $redis->sMembers('k') ); // array(1) {[0]=> string(2) "v1"}

spop key

作用: 返回并删除集合中key中1个随机元素

随机–体现了无序性

<?php$redis->sAdd('key1' , 'set1');$redis->sAdd('key1' , 'set2');$redis->sAdd('key1' , 'set3');// 'key1' => {'set3', 'set1', 'set2'}$redis->sPop('key1');// 'set1', 'key1' => {'set3', 'set2'}$redis->sPop('key1');// 'set3', 'key1' => {'set2'}

srandmember key

作用: 返回集合key中,随机的1个元素.

<?php$redis->sAdd('key1' , 'set1');$redis->sAdd('key1' , 'set2');$redis->sAdd('key1' , 'set3');// 'key1' => {'set3', 'set1', 'set2'}$redis->sRandMember('key1');// 'set1', 'key1' => {'set3', 'set1', 'set2'}$redis->sRandMember('key1');// 'set3', 'key1' => {'set3', 'set1', 'set2'}

sismember key value

作用: 判断value是否在key集合中
是返回1,否返回0

<?php$redis->sAdd('key1' , 'set1');$redis->sAdd('key1' , 'set2');$redis->sAdd('key1' , 'set3');//'key1' => {'set1', 'set2', 'set3'}$redis->sIsMember('key1', 'set1');//TRUE$redis->sIsMember('key1', 'setX');//FALSE

smembers key

作用: 返回集中中所有的元素

<?php$redis->delete('s');$redis->sAdd('s', 'a');$redis->sAdd('s', 'b');$redis->sAdd('s', 'a');$redis->sAdd('s', 'c');var_dump($redis->sMembers('s'));//array(3) {[0]=>string(1) "c" [1]=>string(1) "a" [2]=>string(1) "b"}//集合顺序是随机的,对应于Redis本身内部的结构表征。

scard key

作用: 返回集合中元素的个数

<?php$redis->sAdd('key1' , 'set1');$redis->sAdd('key1' , 'set2');$redis->sAdd('key1' , 'set3');// 'key1' => {'set1', 'set2', 'set3'}$redis->sCard('key1');// 3$redis->sCard('keyX');// 0

smove source dest value

作用:把source中的value删除,并添加到dest集合中

<?php$redis->sAdd('key1' , 'set11');$redis->sAdd('key1' , 'set12');$redis->sAdd('key1' , 'set13');// 'key1' => {'set11', 'set12', 'set13'}$redis->sAdd('key2' , 'set21');$redis->sAdd('key2' , 'set22');// 'key2' => {'set21', 'set22'}$redis->sMove('key1', 'key2', 'set13');// 'key1' =>  {'set11', 'set12'}// 'key2' =>  {'set21', 'set22', 'set13'}

sinter key1 key2 key3

作用: 求出key1 key2 key3 三个集合中的交集,并返回

redis 127.0.0.1:6379> sadd s1 0 2 4 6(integer) 4redis 127.0.0.1:6379> sadd s2 1 2 3 4(integer) 4redis 127.0.0.1:6379> sadd s3 4 8 9 12(integer) 4redis 127.0.0.1:6379> sinter s1 s2 s31) "4"redis 127.0.0.1:6379> sinter s3 s1 s21)"4"
<?php$redis->sAdd('key1', 'val1');$redis->sAdd('key1', 'val2');$redis->sAdd('key1', 'val3');$redis->sAdd('key1', 'val4');$redis->sAdd('key2', 'val3');$redis->sAdd('key2', 'val4');$redis->sAdd('key3', 'val3');$redis->sAdd('key3', 'val4');var_dump($redis->sInter('key1', 'key2', 'key3'));//array(2) {[0]=>string(4) "val4" [1]=>string(4) "val3"}

sinterstore dest key1 key2 key3

作用: 求出key1 key2 key3 三个集合中的交集,并赋给dest

<?php$redis->sAdd('key1', 'val1');$redis->sAdd('key1', 'val2');$redis->sAdd('key1', 'val3');$redis->sAdd('key1', 'val4');$redis->sAdd('key2', 'val3');$redis->sAdd('key2', 'val4');$redis->sAdd('key3', 'val3');$redis->sAdd('key3', 'val4');var_dump($redis->sInterStore('dest', 'key1', 'key2', 'key3'));//int(2)var_dump($redis->sMembers('dest'));//array(2) {[0]=>string(4) "val4" [1]=>string(4) "val3"}

sunion key1 key2.. Keyn

作用: 求出key1 key2 keyn的并集,并返回

<?php$redis->sAdd('s0', '1');$redis->sAdd('s0', '2');$redis->sAdd('s1', '3');$redis->sAdd('s1', '1');$redis->sAdd('s2', '3');$redis->sAdd('s2', '4');var_dump($redis->sUnion('s0', 's1', 's2'));//array(4) { [0]=> string(1) "3" [1]=> string(1) "4" [2]=> string(1) "1" [3]=> string(1) "2"}

sdiff key1 key2 key3

作用: 求出key1与key2 key3的差集
即key1-key2-key3

<?php$redis->delete('s0', 's1', 's2');$redis->sAdd('key1'1');$redis->sAdd('key1'2');$redis->sAdd('key1'3');$redis->sAdd('key1'4');$redis->sAdd('key2', '1');$redis->sAdd('key3', '3');var_dump($redis->sDiff('key1', 'key2', 'key3'));//array(2) {[0]=> string(1) "4" [1]=> string(1) "2"}
0 0
原创粉丝点击