1. 程式人生 > 資料庫 >【redis資料結構 – 集合】

【redis資料結構 – 集合】

redis的集合,是一種無序的集合,集合中的元素沒有先後順序。

集合相關的操作也很豐富,如新增新元素、刪除已有元素、取交集、取並集、取差集等。我們來看例子:
程式碼如下:

//向集合myset中加入一個新元素"one"
127.0.0.1:6379> sadd myset "one"
(integer) 1
127.0.0.1:6379> sadd myset "two"
(integer) 1
//列出集合myset中的所有元素
127.0.0.1:6379> smembers myset

  1. "one"
  2. "two"
    //判斷元素1是否在集合myset中,返回1表示存在
    127.0.0.1:6379> sismember myset "one"
    (integer) 1
    //判斷元素3是否在集合myset中,返回0表示不存在
    127.0.0.1:6379> sismember myset "three"
    (integer) 0
    //新建一個新的集合yourset
    127.0.0.1:6379> sadd yourset "1"
    (integer) 1
    127.0.0.1:6379> sadd yourset "2"
    (integer) 1
    127.0.0.1:6379> smembers yourset
  3. "1"
  4. "2"
    //對兩個集合求並集
    127.0.0.1:6379> sunion myset yourset
  5. "1"
  6. "one"
  7. "2"
  8. "two"
    對於集合的使用,也有一些常見的方式,比如,QQ有一個社交功能叫做“好友標籤”,大家可以給你的好友貼標籤,比如“大美女”、“土豪”、“歐巴”等等,這時就可以使用redis的集合來實現,把每一個使用者的標籤都儲存在一個集合之中。

【redis資料結構 – 有序集合】

redis不但提供了無需集合(sets),還很體貼的提供了有序集合(sorted sets)。有序集合中的每個元素都關聯一個序號(score),這便是排序的依據。

很多時候,我們都將redis中的有序集合叫做zsets,這是因為在redis中,有序集合相關的操作指令都是以z開頭的,比如zrange、zadd、zrevrange、zrangebyscore等等

老規矩,我們來看幾個生動的例子:
//新增一個有序集合myzset,並加入一個元素baidu.com,給它賦予的序號是1:
程式碼如下:

127.0.0.1:6379> zadd myzset 1 baidu.com
(integer) 1
,賦予它的序號是3
127.0.0.1:6379> zadd myzset 3 360.com
(integer) 1
,賦予它的序號是2
127.0.0.1:6379> zadd myzset 2 google.com
(integer) 1
//列出myzset的所有元素,同時列出其序號,可以看出myzset已經是有序的了。
127.0.0.1:6379> zrange myzset 0 -1 with scores

  1. "baidu.com"
  2. "1"
  3. "google.com"
  4. "2"
  5. "360.com"
  6. "3"
    //只列出myzset的元素
    127.0.0.1:6379> zrange myzset 0 -1
  7. "baidu.com"
  8. "google.com"
  9. "360.com"