首頁  >  文章  >  資料庫  >  Redis有序集合使用知識點歸納

Redis有序集合使用知識點歸納

WBOY
WBOY轉載
2022-07-01 12:25:262008瀏覽

這篇文章為大家帶來了關於Redis的相關知識,其中主要整理了有序集合的相關問題,有序的集合,每個元素都由一個成員和一個與成員相關聯的分值組成,成員以字符串存儲,分值以64位雙精度浮點數存儲,下面一起來看一下,希望對大家有幫助。

Redis有序集合使用知識點歸納

推薦學習:Redis影片教學

#Redis資料結構:有序集合

有序的集合。每個元素都由一個成員和一個與成員相關聯的分數組成,成員以字串存儲,分值以64位元雙精度浮點數存儲。成員不可重複,以分數大小排序,相同分值時以成員字典序排序。

資料結構

  • 字串
  • 雜湊
  • 清單
  • 集合
  • #有序集合
  • HyperLogLog
  • 位圖
  • 地理座標

有序集合(sorted set)

  • 新增或更新成員
    1.zadd指令  格式:zadd key [NX|XX] [GT|LT] [CH] [INCR] score member [score member …]
    傳回新增成功的新成員數量,若執行的是更新成員分數回傳0。
    zadd key score member [score member ...]
    Redis有序集合使用知識點歸納
    # XX選項的作用是只更新不添加,執行後返回0。
    zadd key XX score member [score member ...]
    Redis有序集合使用知識點歸納
    # NX選項的功能是只新增不更新,執行成功傳回新增元素的數量。
    zadd key NX score member [score member ...]
    Redis有序集合使用知識點歸納
    # CH選項的作用是傳回被修改成員的數量而非新增成功的成員數量,被修改包括新新增。
    zadd key CH score member [score member ...]
    Redis有序集合使用知識點歸納

  • #移除指定成員
    1.zrem指令格式:zrem key member [member …]
    傳回移除成員的數量,成員不存在於集合中時自動忽略。
    zrem key member [member ...]
    Redis有序集合使用知識點歸納
    2.zremrangebyrank指令  格式:zremrangebyrank key start stop
    移除指定排名範圍內的成員,傳回移除成員的數量,排名可使用正數排名或負數排名。
    zremrangebyrank key start stop
    Redis有序集合使用知識點歸納
    3.zremrangebyscore指令  格式:zremrangebyscore key min max
    移除指定分值範圍內的成員,傳回被移除成員的數量。 min或max前加「(」表示取開區間即不包含邊界值。
    zremrangebyscore key min max
    Redis有序集合使用知識點歸納
    4.zremrangebylex指令  格式:zremrangebylex key min max
    對於依照字典序排列的有序集合(即分數相同),移除指定字典序範圍內的成員。傳回被移除成員的數量,min、max的可取值包括:帶有“[”的值表示包含字典序邊界,帶“(”表示不包含字典序邊界,“ ”表示無窮大,“-”表示無窮小。
    zremrangebylex key min max
    Redis有序集合使用知識點歸納

  • 彈出元素
    1.zpopmax指令  格式:zpopmax key [count]
    彈出分數最高的count個成員,分值最高有多個元素時彈出字典序最大的成員,若未指定count預設1個,執行完成後傳回被彈出元素的成員和分數值。
    zpopmax key [count]
    Redis有序集合使用知識點歸納
    2.zpopmin指令  格式:zpopmin key [count]
    彈出分值最低的count個成員,分值最低有多個元素時彈出字典序最小的成員,若未指定count預設1個,執行完成後傳回被彈出元素的成員和分值。
    zpopmin key [count]
    3.bzpopmax指令  格式:bzpopmax key [key …] timeout
    阻塞式的zpopmax指令,timeout為秒級精確度。命令依序檢查給定的有序集合,並從第一個非空集合彈出分數最大的元素,否則阻塞當前客戶端直到有元素或超出逾時時間返回nil。成功彈出元素時將傳回一個列表,包含被彈出元素所在有序集合、成員以及分數。
    bzpopmax key [key ...] timeout
    Redis有序集合使用知識點歸納
    4.bzpopmin指令  格式:bzpopmin key [key …] timeout
    # 阻塞式的zpopmin指令,timeout為秒級精度。命令依序檢查給定的有序集合,並從第一個非空集合彈出分值最小元素,否則阻塞當前客戶端直到有元素或超出逾時時間返回nil。成功彈出元素時將傳回一個列表,包含被彈出元素所在有序集合、成員以及分數。
    bzpopmin key [key ...] timeout
    Redis有序集合使用知識點歸納
    客戶端2:
    Redis有序集合使用知識點歸納

  • ## 取得成員分值

    1.zscore指令  格式:zscore key member
    取得給定成員的分值,集合不存在或成員不存在時傳回nil。

    zscore key member
    Redis有序集合使用知識點歸納

  • 對成員分值做運算

    1.zincrby指令  格式:zincrby key increment member
    執行完後傳回目前成員分值,increment為正時自增,否則為自減;若鍵不存在或成員不存在則執行建立操作。

    zincrby key increment member
    Redis有序集合使用知識點歸納

  • 取得成員數量

    1.zcard指令  格式:zcard key
    傳回集合包含的成員數量,集合不存在時傳回0。

    zcard key
    Redis有序集合使用知識點歸納 2.zcount指令  格式:zcount key min max
    取得指定分值範圍內的成員數量,min或max前加「( 」表示取開區間即不包含邊界值,值inf表示無窮大,-inf表示無窮小。

    zcount key min max
    Redis有序集合使用知識點歸納 3.zlexcount指令  格式:zlexcount key min max
    對於依照字典序排列的有序集合(即分數相同),取得指定字典序範圍內的成員數量,min、max的
    可取值包括:帶「[ 」的值表示包含字典序邊界,帶「(」表示不包含字典序邊界,「 」表示無窮大,「-」表示無窮小。
    zlexcount key min max
    Redis有序集合使用知識點歸納

  • #取得成員排名

    1.zrank指令  格式:zrank key member
    傳回成員的升序排列排名,集合或成員不存在時傳回nil。

    zrank key member
    Redis有序集合使用知識點歸納 2.zrevrank指令  格式:zrevrank key member
    傳回成員的降序排列排名,集合或成員不存在時傳回nil。

    zrevrank key member
    Redis有序集合使用知識點歸納

  • 取得成員
    1.zrange指令  格式:zrange key min max [BYSCORE|BYLEX] [REV] [LIMIT offset count] [WITHSCORES]
    取得指定索引範圍內的成員,按分值大小升序排列。 WITHSCORES選項可在指令執行後傳回分值,傳回清單奇數位為成員,偶數位為對應分值。集合不存在時返回empty。
    zrange key min max [WITHSCORES]
    Redis有序集合使用知識點歸納
    # 2.zrevrange指令  格式:zrevrange key start stop [WITHSCORES]
    取得指定索引範圍內的成員,按分值大小降序排列。 WITHSCORES選項可在指令執行後傳回分值,傳回清單奇數位為成員,偶數位為對應分值。集合不存在時返回empty。
    zrevrange key start stop [WITHSCORES]
    Redis有序集合使用知識點歸納
    3.zrangebyscore指令  格式:zrangebyscore key min max [WITHSCORES] [LIMIT offset count]
    取得指定分值值範圍內的成員,依分值大小升序排列。 WITHSCORES選項可在指令執行後傳回分值,傳回清單奇數位為成員,偶數位為對應分值。集合不存在時返回empty。
    zrangebyscore key min max [WITHSCORES] [LIMIT offset count]
    Redis有序集合使用知識點歸納
    [LIMIT offset count]選項的作用是限制傳回的成員數量,offset指定需要跳過的成員數量,count執行最多回傳成員的數量,count為負時取絕對值。
    Redis有序集合使用知識點歸納
    min或max前加上「(」表示取開區間即不包含邊界值,值inf表示無窮大,-inf表示無窮小。
    Redis有序集合使用知識點歸納
    4.zrevrangebyscore指令格式:zrevrangebyscore key max min [WITHSCORES] [LIMIT offset count]
    取得指定分值範圍內的成員,按分值大小降序排列,注意max min順序。
    zrevrangebyscore key max min [WITHSCORESRES ] [LIMIT offset count]
    Redis有序集合使用知識點歸納
    5.zrangebylex指令  格式:zrangebylex key min max [LIMIT offset count]
    當成員分值相同時,取得指定字典序範圍內成員,依字典序升序排列,min、max的可取值包括:帶「[」的值表示包含字典序邊界,帶「(」表示不包含字典序邊界,「」表示無窮大,「-」表示無限小。
    zrangebylex key min max [LIMIT offset count]
    Redis有序集合使用知識點歸納
    6.zrevrangebylex指令  格式:zrevrangebylex keymax min [ LIMIT offset count]
    當成員分值相同時,取得指定字典序範圍內成員,依字典序降序排列,max、min的可取值包括:帶「[」的值表示包含字典序邊界,帶「(」表示不包含字典序邊界,「 」表示無窮大,「-」表示無窮小。
    zrevrangebylex key max min [LIMIT offset count]

  • 集合運算
    1.並集
     1)zunionstore指令  格式:zunionstore destination numkeys key [key …] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]
    numkeys為參與運算的集合數量,不對應時傳回error,執行完後傳回新集合的成員數。並集得到的為成員集合,若參與運算的集合中有相同成員,則預設新集合的成員分數為原集合成員分數相加。
    zunionstore destination numkeys key [key ...]
    Redis有序集合使用知識點歸納
    # AGGREGATE選項功能是指定使用的聚合函數,不指定時預設SUM。 SUM指分值相加,MIN指取最小分值,MAX指取最大分值。
    zunionstore destination numkeys key [key ...] [AGGREGATE SUM|MIN|MAX]
    Redis有序集合使用知識點歸納
    WEIGHTS 選項作用是執行聚合前為每個集合分別設定一個權重,權重分別與集合中成員分數相乘得到新分值,然後執行聚合計算。
    Redis有序集合使用知識點歸納
     2)zunion指令  格式:zunion numkeys key [key …] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX] [WITHSCORES]
    執行完成後傳回新集合成員。
    zunion numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX] [WITHSCORES]
    2.交集
     1)zinterstore指令  格式:zinterstore destination numkeys key [key …] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]
    執行完後傳回新集合的成員數量。
    zinterstore destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]
     2)zinter指令  格式:zinter numkeys key [key …] [WEIGHTS weight ] [AGGREGATE SUM|MIN|MAX] [WITHSCORES]
    執行完後傳回新集合成員。
    zinter numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX] [WITHSCORES]
    ##注意#: 1.集合運算可以使用集合作為輸入,預設情況下,集合成員的分值看做1參與運算,可使用WEIGHTS選項設定權重改變集合分值。

  • 常見用法

    1.排行榜
    2.時間軸

推薦學習:

Redis影片教學

以上是Redis有序集合使用知識點歸納的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除