這篇是接着上篇來的,因此標號就繼續了~~~~ 數組
4、set spa
介紹:
set集合元素是不重複的無序的。set類型與list類型有類似之處,如圖:
命令:
①sadd/smembers/srem/sismember 添加/獲取/刪除/是不是set的元素
sadd set a,sadd set b,
smembers set(返回set集合全部的元素) srem set a, sismember b
sadd set1 a b c
②sdiff/sinter(交集)/sunion(並集)
sdiif set set1 返回差集,即返回set有的而set2中沒有
sinter set set1 返回兩個set都有的
sunion set set1 返回兩個的都有的
③sdiffstore/sinterstore/sunionstore
將②中的數據存儲 sdiffstore a1 set set1 存到a1中 a1也是一個set集合
④scard(獲取集合長度)/spop(隨機從集合中取出並刪除一個元素)
scard set 返回set集合長度,spop set 隨機從set中彈出一個元素
⑤srandmember key [count]
若是 count 爲正數,且小於集合基數,那麼命令返回一個包含 count 個元素的數組,數組中的元素各不相同。 ip
若是 count 大於等於集合基數,那麼返回整個集合。
若是 count 爲負數,那麼命令返回一個數組,數組中的元素可能會重複出現屢次,而數組的長度爲 count 的絕對值。 內存
5、sortedset rem
介紹:
有序集合,在set集合類型的基礎上爲集合中的每一個元素都關聯了一個分數,這樣能夠很方便的得到分數最高的N個元素(topN)。
有序集合類型和列表類型的差別
相同點
(1)兩者都是有序的
(2)兩者均可以得到某一範圍的元素
不一樣點
(1)列表類型是經過雙向鏈表實現的,獲取靠近兩端的數據速度極快,當列表中元素增多後,訪問中間的數據速度會很慢,因此它比較適合不多訪問中間元素的應用
(2)有序集合類型是使用散列表和跳躍表(skip list)實現的,因此即便讀取位於中間部分的數據速度也很快
(3)列表中不能簡單的調整某個元素的位置,可是有序集合能夠(經過更改這個元素的分值)
(4)有序集合要比列表類型更耗費內存
命令:
①zadd/zscore/zrange/zrevrange/ 添加/獲取指定元素分數/從小到大返回/從大到小返回
zadd zset 10 a zadd zset 20 b zadd zset 5 c
zscore zset b(返回20)
zrange zset 0 -1 返回(c a b)有序
zrevrange zset 0 -1 (b a c)
②zrangebyscore(默認是閉區間,可以使用"("使用開區間)
zrangebyscore zset 0 10 獲取zset中0分到10分的元素 這裏返回c和a
zrangebyscore zset 0 (10 獲取zset中0分到10分的元素 這裏返回c
③zincrby/zcard/zcount(獲取指定分數範圍的元素個數)
zincrby zset 6 c 讓zset中c元素的值加6
zcard zset 返回zset中元素個數
zcount zset 0 10 指定分數範圍的元素
④zrem/zremrangebyrank/zremrangebyscore
zrem zset a
zremrangebyrank zset 0 1 角標區間刪除
zremrangebyscore zset 0 10 分數範圍刪除
擴展:+inf(正無窮) -inf(負無窮)
io