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

三、set集合類型

簡介 redis

set集合和list列表十分的類似,均可以存儲多個字符串。可是list列表能夠存儲重複值,而set集合中不可重複。數據庫

集合結構數組

其中的user爲鍵名,其能夠包含多個 不重複 的元素,各不相同命令行

[
    "user":[
        "yanying1",
        "yanying2",
        "yanying3"
    ]
]

操做方法code

命令 行爲
sadd 將指定的元素添加到集合
smembers 返回集合所包含的全部元素,若是數據量大, 謹慎使用
sismember 檢查給定的元素是否在集合中
srem 若是給定的元素在集合中,則刪除它
$redis->sadd PHP版本將元素添加到集合
$redis->smembers PHP版本取出集合中的全部元素
$redis->sismember PHP版本檢測元素是否存在於集合中
$redis->srem PHP版本從集合中刪除一個元素

演示(命令行 + PHP演示)rem

命令行:字符串

添加一個元素到集合,返回 1表明插入成功;0元素表明已經存在string

sadd set-key item // 返回 1

同理,再添加元素到集合it

sadd set-key item2 // 返回1,表示插入成功,集合內沒有該元素
sadd set-key item3 // 返回1
sadd set-key item // 返回0,表示插入失敗,集合內已經存在

添加完了以後,咱們來獲取集合內所有的元素,成功返回 所有元素table

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
相關文章
相關標籤/搜索