redis之set 集合命令詳解

2021-07-31 18:03:42 字數 4706 閱讀 9210

集合的性質: 唯一性,無序性,確定性

注: 在string和link的命令中,可以通過range 來訪問string中的某幾個字元或某幾個元素

但,因為集合的無序性,無法通過下標或範圍來訪問部分元素.

因此想看元素,要麼隨機先乙個,要麼全選

作用: 往集合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)

spop key

作用: 返回並刪除集合中key中1個隨機元素

隨機–體現了無序性

<?php

$redis->sadd('key1' , 'set1');

$redis->sadd('key1' , 'set2');

$redis->sadd('key1' , 'set3');// 'key1' =>

$redis->spop('key1');// 'set1', 'key1' =>

$redis->spop('key1');// 'set3', 'key1' =>

srandmember key

作用: 返回集合key中,隨機的1個元素.

<?php

$redis->sadd('key1' , 'set1');

$redis->sadd('key1' , 'set2');

$redis->sadd('key1' , 'set3');// 'key1' =>

$redis->srandmember('key1');// 'set1', 'key1' =>

$redis->srandmember('key1');// 'set3', 'key1' =>

sismember key value

作用: 判斷value是否在key集合中

是返回1,否返回0

<?php

$redis->sadd('key1' , 'set1');

$redis->sadd('key1' , 'set2');

$redis->sadd('key1' , 'set3');//'key1' =>

$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)

//集合順序是隨機的,對應於redis本身內部的結構表徵。

scard key

作用: 返回集合中元素的個數

<?php

$redis->sadd('key1' , 'set1');

$redis->sadd('key1' , 'set2');

$redis->sadd('key1' , 'set3');// 'key1' =>

$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' =>

$redis->sadd('key2' , 'set21');

$redis->sadd('key2' , 'set22');// 'key2' =>

$redis->smove('key1', 'key2', 'set13');

// 'key1' =>

// 'key2' =>

sinter key1 key2 key3

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

redis

127.0.0.1:6379> sadd s1 024

6(integer) 4

redis 127.0.0.1:6379> sadd s2 123

4(integer) 4

redis 127.0.0.1:6379> sadd s3 489

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)

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)

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)

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)

Redis 集合(set)命令詳解

向集合新增乙個或多個成員 sadd 命令將乙個或多個成員元素加入到集合中,已經存在於集合的成員元素將被忽略。假如集合 key 不存在,則建立乙個只包含新增的元素作成員的集合。當集合 key 不是集合型別時,返回乙個錯誤。返回值 被新增到集合中的新元素的數量,不包括被忽略的元素。返回集合中的所有成員 ...

redis命令之集合(set)

一 常用命令 1 sadd set key item item 說明 將乙個或多個元素新增到set key中,返回新增成功的個數1 smembers set key說明 獲取set key中所有元素,如果set key儲存的不是乙個集合,返回乙個錯誤。2 sismember set key item...

Redis 集合 Set)命令

redis的set是string型別的無序集合。集合成員是唯一的,意味著集合中不能出現重複的資料。redis中集合是通過雜湊表實現的,所以刪除,新增,查詢的複雜度都是o 1 命令 描述sunion 返回所有給定集合的並集 scard 獲取集合的成員數 srandmember 返回集合中乙個或多個隨機...