3、set集合型別
簡介
set集合和list列表十分的相似,都可以儲存多個字串。但是list列表可以儲存重複值,而set
集合中不可重複。
集合結構
其中的user
為鍵名,其可以包含多個 不重複 的元素,各不相同
[
"user":[
"yanying1",
"yanying2",
"yanying3"
]
]
操作方法
命令 | 行為 |
---|---|
sadd | 將指定的元素新增到集合 |
smembers | 返回集合所包含的所有元素,如果資料量大, 謹慎使用 |
sismember | 檢查給定的元素是否在集合中 |
srem | 如果給定的元素在集合中,則刪除它 |
$redis->sadd |
PHP版本將元素新增到集合 |
$redis->smembers |
PHP版本取出集合中的所有元素 |
$redis->sismember |
PHP版本檢測元素是否存在於集合中 |
$redis->srem |
PHP版本從集合中刪除一個元素 |
演示(命令列 + PHP演示)
命令列:
新增一個元素到集合,返回 1
代表插入成功;0
元素代表已經存在
sadd set-key item // 返回 1
同理,再新增元素到集合
sadd set-key item2 // 返回1,表示插入成功,集合內沒有該元素
sadd set-key item3 // 返回1
sadd set-key item // 返回0,表示插入失敗,集合內已經存在
新增完了之後,我們來獲取集合內全部的元素,成功返回 全部元素
smembers set-key // 得到結果:`item`,`item2`,`item3`,由於元素不能重複,所以最後一個item不存在集合中
下面介紹這個集合的重要功能,使用sismember
命令 檢查元素是否在集合中 , 存在返回1,不存在返回0
sismember set-key item4 // 由於item4不在集合中,所以返回 0
sismember set-key item // item元素是存在於集合中的,返回1;同理item2,item3也是會返回1
下面我們嘗試刪除一個元素,如果刪除成功過後,會返回 被刪除元素的個數
srem set-key item //刪除成功,返回刪除個數:1
srem set-key item // item之前已經被刪除,所以刪除失敗,返回個數0。這裡不是表示true or false
我們再次檢查所有元素,發現只剩下item2
,item3
smembers set-key // 返回`item2`,`item3`
PHP版本演示
第一步,連結redis資料庫
$redis = new Redis();
$redis->connect(`127.0.0.1`, 6379);
我們先插入一個元素item
到set-key
集合。1
代表插入成功;0
元素代表已經存在
$redis->sadd(`set-key`,`item`); // 新增成功,返回1
接下來,我們再次新增一次item
到set-key
集合,發現已經存在,並且 返回了0
$redis->sadd(`set-key`,`item`); // 集合中已經存在item,新增失敗,返回0
為了下面演示,我們在新增幾個元素
$redis->sadd(`set-key`,`item2`);
$redis->sadd(`set-key`,`item3`);
現在集合中有3個元素了,我們使用smembers
命令全部取出
$r = $redis->smembers(`set-key`);
var_dump($r);
列印過後,我們獲取了一個包含item
,item2
,item3
的陣列
array (size=3)
0 => string `item` (length=4)
1 => string `item2` (length=5)
2 => string `item3` (length=5)
下面我們使用sismember
命令來檢查一個元素是否存在於集合中,這個在 檢查如暱稱是否已經存在 時候非常有用
$redis->sismember(`set-key`,`item`); //該元素存在集合中,則為 boolean true,反之boolean false
最後,還是刪除一個元素。假設是item
,第一次刪除,該元素存在於集合,則返回 被刪除的個數1
$redis->srem(`set-key`,`item`); // int 1
這時,我們再次執行刪除命令,由於元素已經不存在集合,所以,返回 被刪除0個
$redis->srem(`set-key`,`item`); // int 0