PHP+Redis實戰教程(4):set集合型別

星空幻穎發表於2016-09-25

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

我們先插入一個元素itemset-key集合。1代表插入成功;0元素代表已經存在

$redis->sadd(`set-key`,`item`); // 新增成功,返回1

接下來,我們再次新增一次itemset-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

相關文章