redis學習之有序集合

supermanhss發表於2019-09-06

redis有序集合與集合不同的是每個成員都會關聯一個double型別的分數,redis就是利用分數對集合中的成員進行從小到大的排序。

目錄

查詢集合成員

查詢集合成員的分數

統計

加入集合

成員增量

刪除集合成員

交集

並集

迭代


查詢集合成員

  • zrange key start stop [withscores] 通過索引區間取得有序集合中給定區間內的成員;
  • zrangebylex key min max [limit offset count] 通過字典區間取得有序集合中給定區間內的成員;
  • zrangebyscore key min max [withscores] [limit offset count] 通過成員分數區間取得有序集合中給定區間內的成員;
  • zrevrange key start stop [withscores] 通過索引區間取得有序集合中給定區間內的成員,從大到小排序;
  • zrevrangebyscore key min max [withscores] [limit offset count] 通過成員分數區間取得給定區間內的成員,從大到小排序;

查詢集合成員的分數

  • zscore key member 取得有序集合中給定成員的分數值;
  • zrank key member 取得有序集合中給定成員的排名,集合從小到大排序的;
  • zrevrank key member 取得有序集合中給定成員的排名,集合從大到小排序的;

統計

  • zcard key 取得有序集合的成員數;
  • zcount key min max  取得有序集合中指定區間分數的成員數;
  • zlexcount key min max 取得有序集合中指定區間字串的成員數,該集合必須是同分數的;

加入集合

  • zadd key score member [score member [...]] 向有序集合中新增一個或多個成員,或修改已存在成員的分數;

成員增量

  • zincrby key increment member 對有序集合中指定成員的分數加上增量 increment;

刪除集合成員

  • zrem key member [member [...]] 移除有序集合中一個或多個成員;
  • zremrangebylex key min max [with scores] 移除有序集合中給定字串區間的成員,這個有序集合的分數必須相同,否則有錯誤;
    例:zadd myzset 0 a 0 b 0 c 0 d 0 e // 分數都是0,必須是相同的
           zremrangebylex myzset [a (c // “[”表示包括字串a,“(”表示小於字串c但不包括c
           zrange myzset 0 -1 // 集合只剩下:c d e
     
  • zremrangebyrank key start end 移除有序集合中從start 開始到 end 結束個成員(包括第 start|end 個成員);
  • zremrangebyscore key min max [with scores] [limit] 移除遊戲集合中給定分數區間的成員(包括分數為 min|max 的成員);

交集

  • zinterstore destination numkeys key [key [...]] 計算給定的一個或多個有序集合的交集並將結果儲存在新的有序集合destination中,其中給定集合的數量必須由numkeys引數指定。

並集

  • zunionstore destination numkeys key [key [...]] 計算給定的一個或多個有序集合的並集並將結果儲存在新的有序集合destination中,其中給定集合的數量必須由numkeys引數指定。

迭代

  • zscan key cursor [match pattern] [count] 迭代有序集合中的元素,包括元素成員、元素分值。

 

相關文章