集合型別是redis提供了一種內建資料型別,集合與列表相反,集合中的元素沒有順序,並且每個元素都是唯一的。
集合型別底層用雜湊表實現,效能非常好,同時,集合還支援數學意義上的操作:交集、並集、差集運算。
命令
sadd key member1 member2... #新增元素
srem key member1 member2... #移除元素
smembers key
#獲取集合中所有元素
sismember key member #判斷是否為集合中的元素
sdiff key1 key2.. #計算差集
sinter key1 key2.. #計算交集
sunion key1 key2.. #計算並集
scard key
#獲取集合中元素的個數
#集合運算 並儲存結合到新的集合
sdiffstore destination key1 key2...
sinterstore destination key1 key2...
sunionstore destination key1 key2...
srandmember key count #隨機獲取集合中count個元素, count為負值時可能重複獲取,count為整數時不會獲取重複的元素,獲取個數都為|count|
spop key
#從集合中彈出乙個元素
示例127.0
.0.1:6379> sadd s1 a b c
(integer) 3
127.0
.0.1:6379> smembers s1
1) "b"
2) "c"
3) "a"
127.0
.0.1:6379> srem s1 a
(integer) 1
127.0
.0.1:6379> smembers s1
1) "b"
2) "c"
127.0
.0.1:6379> sismember s1 b
(integer) 1
127.0
.0.1:6379> scard s1
(integer) 2
127.0
.0.1:6379> sadd s2 b c d
(integer) 3
127.0
.0.1:6379> sadd s3 d e f
(integer) 3
127.0
.0.1:6379> sdiff s1 s2 s3
(empty list or
set)
127.0
.0.1:6379> sinter s1 s2
1) "b"
2) "c"
127.0
.0.1:6379> sunion s1 s2 s3
1) "d"
2) "b"
3) "c"
4) "f"
5) "e"
127.0
.0.1:6379> sdiffstore s4 s1 s2
(integer) 0
127.0
.0.1:6379> smembers s4
(empty list or
set)
127.0
.0.1:6379> sinterstore s5 s1 s2
(integer) 2
127.0
.0.1:6379> smembers s5
1) "b"
2) "c"
127.0
.0.1:6379> sunionstore s6 s1 s3 s2
(integer) 5
127.0
.0.1:6379> smembers s6
1) "c"
2) "f"
3) "e"
4) "d"
5) "b"
127.0
.0.1:6379> srandmember s6 2
1) "f"
2) "c"
127.0
.0.1:6379> spop s6 2
1) "e"
2) "b"
127.0
.0.1:6379>
實現方式為:
ket =post:articleid:tags
集合非常適合對標籤進行單獨操作,可以直接使用sadd
和srem
命令方便的進行操作。
另外,值得一提的是,在某些情況下,可能是對標籤進行整體編輯而不是單個編輯,對於這種情況就沒有發揮集合的優勢,可以直接使用字串來完成。
這樣的需求如果用關係型資料庫來實現,就需要三張表:文章表,標籤表,標籤文章關係表,並且需要通過乙個join查詢來得到結果,當資料量比較大時,效率很低,而且不易於維護。
如果使用redis來實現,那麼只需要提供乙個這樣的資料結構即可:
#對每乙個標籤提供乙個這樣的集合
tag:type:posts
在該集合中儲存對應的文章id
$articleids
= smember tag:redis:post
loop
$articleids
$articlecontext
= hget post:articleid title
為什麼要使用Redis? Redis實戰經驗
序言,從一張思維導圖開始,慢慢介紹我自己關於redis的實戰經驗 現在很多網際網路應用的服務端都使用到了redis,到底大家為什麼要用redis呢?redis有很多特性,比如高效能 高可用 資料型別豐富 易於擴充套件 可持久化 原子性等等,我覺得其中的 高效能 和 資料型別豐富 是最具決定性的,分析...
集合類 陣列
一.陣列類 nsarray 不可變陣列,即 物件建立好以後,陣列中的元素個數不能變化.nsmutablearray 可變陣列,物件建立好以後元素個數可以變化,陣列中的元素可以靈活的增刪改.nsarray初始化方法 nsarray names nsarray alloc initwithobjects...
集合工具類
collections 多數都是靜態類,由類名呼叫 sort max min reverse copy collections.binarysearch list,25 二分查詢法針對的是公升序排序的集合,如果沒有排序,就不能用二分查詢法,找到了就返回索引。一般與sort聯用。先sort,在二分查詢...