【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
- "one"
- "two"
//判斷元素1是否在集合myset中,返回1表示存在
127.0.0.1:6379> sismember myset "one"
//判斷元素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 - "1"
- "2"
//對兩個集合求並集
127.0.0.1:6379> sunion myset yourset - "1"
- "one"
- "2"
- "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
- "baidu.com"
- "1"
- "google.com"
- "2"
- "360.com"
- "3"
//只列出myzset的元素
127.0.0.1:6379> zrange myzset 0 -1 - "baidu.com"
- "google.com"
- "360.com"