redis學習(二)

來源:互聯網
上載者:User

標籤:

集合

添加/刪除元素

SADD key member1 member2 ...

SREM key member1 member2 ...

獲得集合中的所有元素

SMEMBERS key

127.0.0.1:6380> sadd car benz baoma xiandai(integer) 3127.0.0.1:6380> smembers car1) "baoma"2) "xiandai"3) "benz"127.0.0.1:6380> srem car benz(integer) 1127.0.0.1:6380> smembers car1) "baoma"2) "xiandai"127.0.0.1:6380> 

判斷某個元素是否在集合中,存在則返回1,不存在則返回0

SISMEMBER key  member

127.0.0.1:6380> sismember car xiandai(integer) 1127.0.0.1:6380> sismember car benz(integer) 0127.0.0.1:6380> 

集合間的運算

SDIFF key1 key2...   即A-B={x|x∈A且x∈/B}

SINTER key1 key2...   即A∩B={x|x∈A且x∈B}

SUNION key1 key2 ... 即AUB={x|x∈A 或x∈B}

127.0.0.1:6380> sadd a 1 2 3 4 (integer) 4127.0.0.1:6380> sadd b 3 4 5 6(integer) 4127.0.0.1:6380> sdiff a b1) "1"2) "2"127.0.0.1:6380> sinter a b1) "3"2) "4"127.0.0.1:6380> sunion a b1) "1"2) "2"3) "3"4) "4"5) "5"6) "6"127.0.0.1:6380> 

進行集合運算並將結果儲存

SDIFFSTORE destination key [key …]
SINTERSTORE destination key [key …]
SUNIONSTORE destination key [key …]

SDIFFSTORE命令和SDIFF命令功能一樣,唯一的區別就是前者不會直接返回運算結果,而是將結果儲存在destination鍵中。

SDIFFSTORE命令常用於需要進行多步集合運算的情境中,如需要先計算差集再將結果和其他鍵計算交集。

擷取集合中元素的個數:

SCARD key

隨機獲得集合中的元素

SRANDMEMBER key [count]

(1)當count為正數時,SRANDMEMBER會隨機從集合裡獲得count個不重複的元素。如果count的值大於集合中的元素個數,則SRANDMEMBER會返回集合中的全部元素。(2)當count為負數時,SRANDMEMBER會隨機從集合裡獲得|count|個的元素,這些元素有可能相同。

127.0.0.1:6380> srandmember a 21) "4"2) "2"127.0.0.1:6380> srandmember a"3"127.0.0.1:6380> 

從集合中彈出一個元素

SPOP KEY  這個隨機彈出的

127.0.0.1:6380> smembers a1) "1"2) "2"3) "3"4) "4"127.0.0.1:6380> spop a"1"127.0.0.1:6380> spop a"3"127.0.0.1:6380> smembers a1) "2"2) "4"127.0.0.1:6380> 

 有序集合

 

有序集合類型在某些方面和清單類型有些相似。
(1)二者都是有序的。
(2)二者都可以獲得某一範圍的元素。
但是二者有著很大的區別,這使得它們的應用情境也是不同的。
(1)清單類型是通過鏈表實現的,擷取靠近兩端的資料速度極快,而當元素增多後,訪問中間資料的速度會較慢,所以它更加適合實現如“新鮮事”或“日誌”這樣很少訪問中間元素的
應用。
(2)有序集合類型是使用散列表和跳躍表(Skip list)實現的,所以即使讀取位於中間部分的資料速度也很快(時間複雜度是O(log(N)))。
(3)列表中不能簡單地調整某個元素的位置,但是有序集合可以(通過更改這個元素的分數)。
(4)有序集合要比清單類型更耗費記憶體。有序集合類型算得上是 Redis的5種資料類型中最進階的類型了,在學習時可以與清單類型和集合類型對照理解。

增加元素

ZADD key scord member [scord member ...]

修改某個元素的分數

ZADD key scord member

擷取元素的分數

ZSCORE key member

127.0.0.1:6380> zadd cheeron 90 math 80 english 89 chinese(integer) 3127.0.0.1:6380> zadd cheeron 87 english(integer) 0127.0.0.1:6380> zscore cheeron math"90"127.0.0.1:6380> zscore cheeron english"87"127.0.0.1:6380> 

獲得排名在某個範圍的元素列表

ZRANGE key start stop [WITHSCORES]

ZREVRANGE key start stop [WITHSCORES]

ZRANGE命令會按照元素分數從小到大的順序返回索引從start到stop之間的所有元素(包含兩端的元素)。ZRANGE命令與LRANGE命令十分相似,如索引都是從0開始,負數代表從後向前尋找(-1表示最後一個元素)。

127.0.0.1:6380> zrange cheeron 0 21) "english"2) "chinese"3) "math"127.0.0.1:6380> zrange cheeron 1 -11) "chinese"2) "math"127.0.0.1:6380> zrange cheeron 2 0(empty list or set)

如果需要同時獲得元素的分數的話可以在ZRANGE命令的尾部加上WITHSCORES參數

127.0.0.1:6380> zrange cheeron 0 -1 withscores1) "english"2) "87"3) "chinese"4) "89"5) "math"6) "90"127.0.0.1:6380> 

獲得指定分數範圍的元素

ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
ZRANGEBYSCORE命令參數雖然多,但是都很好理解。該命令按照元素分數從小到大的順序返回分數在min和max之間(包含min和max)的元素:

加了"("則表示不包含的意思

127.0.0.1:6380> zrangebyscore cheeron 80 901) "english"2) "chinese"3) "math"127.0.0.1:6380> zrangebyscore cheeron 80 (901) "english"2) "chinese"127.0.0.1:6380> 

 

redis學習(二)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.