您的位置:首页 > 数据库 > Redis

redis之set 集合命令详解

2017-05-08 10:30 417 查看
集合 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的元素

返回值: 忽略不存在的元素后,真正删除掉的元素的个数

<?php
var_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) 4
redis 127.0.0.1:6379> sadd s2 1 2 3 4
(integer) 4
redis 127.0.0.1:6379> sadd s3 4 8 9 12
(integer) 4
redis 127.0.0.1:6379> sinter s1 s2 s3
1) "4"
redis 127.0.0.1:6379> sinter s3 s1 s2
1)"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"
b224
[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"}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  redis set 集合