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

本篇文章給大家?guī)砹岁P(guān)于redis的相關(guān)知識,其中主要整理了有序集合的相關(guān)問題,有序的集合,每個元素都由一個成員和一個與成員相關(guān)聯(lián)的分值組成,成員以字符串存儲,分值以64位雙精度浮點數(shù)存儲,下面一起來看一下,希望對大家有幫助。

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

推薦學(xué)習(xí):redis

redis數(shù)據(jù)結(jié)構(gòu):有序集合

有序的集合。每個元素都由一個成員和一個與成員相關(guān)聯(lián)的分值組成,成員以字符串存儲,分值以64位雙精度浮點數(shù)存儲。成員不可重復(fù),以分值大小進(jìn)行排序,相同分值時以成員字典序排序。

數(shù)據(jù)結(jié)構(gòu)

  • 字符串
  • 散列
  • 列表
  • 集合
  • 有序集合
  • HyperLogLog
  • 位圖
  • 地理坐標(biāo)

有序集合(sorted set)

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

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

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

  • 獲取成員分值
    1.zscore命令??格式:zscore key member
    獲取給定成員的分值,集合不存在或者成員不存在時返回nil。
    zscore key member
    Redis有序集合使用知識點歸納

  • 對成員分值做運算
    1.zincrby命令??格式:zincrby key increment member
    執(zhí)行完后返回當(dāng)前成員分值,increment為正時自增,否則為自減;若鍵不存在或成員不存在則執(zhí)行創(chuàng)建操作。
    zincrby key increment member
    Redis有序集合使用知識點歸納

  • 獲取成員數(shù)量
    1.zcard命令??格式:zcard key
    返回集合包含的成員數(shù)量,集合不存在時返回0。
    zcard key
    Redis有序集合使用知識點歸納
    2.zcount命令??格式:zcount key min max
    獲取指定分值范圍內(nèi)的成員數(shù)量,min或max前加“(”表示取開區(qū)間即不包含邊界值,值+inf表示無窮大,-inf表示無窮小。
    zcount key min max
    Redis有序集合使用知識點歸納
    3.zlexcount命令??格式:zlexcount key min max
    對于按照字典序排列的有序集合(即分值相同),獲取指定字典序范圍內(nèi)的成員數(shù)量,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]
    獲取指定索引范圍內(nèi)的成員,按分值大小升序排列。WITHSCORES選項可在命令執(zhí)行后返回分值,返回列表奇數(shù)位為成員,偶數(shù)位為對應(yīng)分值。集合不存在時返回empty。
    zrange key min max [WITHSCORES]
    Redis有序集合使用知識點歸納
    2.zrevrange命令??格式:zrevrange key start stop [WITHSCORES]
    獲取指定索引范圍內(nèi)的成員,按分值大小降序排列。WITHSCORES選項可在命令執(zhí)行后返回分值,返回列表奇數(shù)位為成員,偶數(shù)位為對應(yīng)分值。集合不存在時返回empty。
    zrevrange key start stop [WITHSCORES]
    Redis有序集合使用知識點歸納
    3.zrangebyscore命令??格式:zrangebyscore key min max [WITHSCORES] [LIMIT offset count]
    獲取指定分值范圍內(nèi)的成員,按分值大小升序排列。WITHSCORES選項可在命令執(zhí)行后返回分值,返回列表奇數(shù)位為成員,偶數(shù)位為對應(yīng)分值。集合不存在時返回empty。
    zrangebyscore key min max [WITHSCORES] [LIMIT offset count]
    Redis有序集合使用知識點歸納
    [LIMIT offset count]選項的作用是限制返回的成員數(shù)量,offset指定需要跳過的成員數(shù)量,count執(zhí)行最多返回成員的數(shù)量,count為負(fù)時取絕對值。
    Redis有序集合使用知識點歸納
    min或max前加“(”表示取開區(qū)間即不包含邊界值,值+inf表示無窮大,-inf表示無窮小。
    Redis有序集合使用知識點歸納
    4.zrevrangebyscore命令??格式:zrevrangebyscore key max min [WITHSCORES] [LIMIT offset count]
    獲取指定分值范圍內(nèi)的成員,按分值大小降序排列,注意max min順序。
    zrevrangebyscore key max min [WITHSCORES] [LIMIT offset count]
    Redis有序集合使用知識點歸納
    5.zrangebylex命令??格式:zrangebylex key min max [LIMIT offset count]
    當(dāng)成員分值相同時,獲取指定字典序范圍內(nèi)成員,按字典序升序排列,min、max的可取值包括:帶“[”的值表示包含字典序邊界,帶“(”表示不包含字典序邊界,“+”表示無窮大,“-”表示無窮小。
    zrangebylex key min max [LIMIT offset count]
    Redis有序集合使用知識點歸納
    6.zrevrangebylex命令??格式:zrevrangebylex key max min [LIMIT offset count]
    當(dāng)成員分值相同時,獲取指定字典序范圍內(nèi)成員,按字典序降序排列,max、min的可取值包括:帶“[”的值表示包含字典序邊界,帶“(”表示不包含字典序邊界,“+”表示無窮大,“-”表示無窮小。
    zrevrangebylex key max min [LIMIT offset count]

  • 集合運算
    1.并集
    ?1)zunionstore命令??格式:zunionstore destination numkeys key [key …] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]
    numkeys為參與運算的集合數(shù)量,不對應(yīng)時返回error,執(zhí)行完后返回新集合的成員數(shù)量。并集得到的為成員集合,若參與運算的集合中有相同成員,則默認(rèn)新集合的成員分值為原集合成員分?jǐn)?shù)相加。
    zunionstore destination numkeys key [key …]
    Redis有序集合使用知識點歸納
    AGGREGATE選項作用是指定使用的聚合函數(shù),不指定時默認(rèn)SUM。SUM指分值相加,MIN指取最小分值,MAX指取最大分值。
    zunionstore destination numkeys key [key …] [AGGREGATE SUM|MIN|MAX]
    Redis有序集合使用知識點歸納
    WEIGHTS 選項作用是執(zhí)行聚合前為每個集合分別設(shè)置一個權(quán)重,權(quán)重分別與集合中成員分值相乘得到新分值,然后執(zhí)行聚合計算。
    Redis有序集合使用知識點歸納
    ?2)zunion命令??格式:zunion numkeys key [key …] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX] [WITHSCORES]
    執(zhí)行完成后返回新集合成員。
    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]
    執(zhí)行完后返回新集合的成員數(shù)量。
    zinterstore destination numkeys key [key …] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]
    ?2)zinter命令??格式:zinter numkeys key [key …] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX] [WITHSCORES]
    執(zhí)行完后返回新集合成員。
    zinter numkeys key [key …] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX] [WITHSCORES]
    注意
    1.集合運算可以使用集合作為輸入,默認(rèn)情況下,集合成員的分值看做1參與運算,可使用WEIGHTS選項設(shè)置權(quán)重改變集合分值。

  • 常見用法
    1.排行榜
    2.時間線

推薦學(xué)習(xí):redis

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點贊6 分享