有序集合

特點

-- 元素不可重複
-- 元素可以排序 (它給每個元素設置一個分數(score)作爲排序的依據。 )

列表、集合、有序集合的異同點

數據結構 是否允許重複元素 是否有序 有序實現方式 應用場景
列表 索引下標 消息隊列、文章列表、時間軸
集合 標籤、抽獎、社交
有序集合 分值(score) 排行榜、社交

命令

集合內

  • 添加成員 zadd key score member [score member ...]
    有序集合相比集合提供了排序字段score , 但也產生了代價,zadd的時間複雜度爲O(log(n)),sadd爲O(1)。
  • 計算成員個數 zcard key
  • 計算某個成員的分數 zscore key member
  • 計算成員的排名
    zrank key member
    zrevrank key member
  • 刪除成員 zrem key member
  • 增加成員分數 zincrby key increment member
  • 返回指定排名範圍的成員
    zrange key start end [withscores]
    zrevrange key start end [withscores]
  • 返回指定分數範圍的成員
    zrangebyscore key min max [withscores] [limit offset count]
    zrevrangebyscore key max min [withscores] [limit offset count]
    同時 min 和 max 還支持開區間(小括號)和閉區間(中括號),-inf 和
    +inf 分表代表無限小和無限大。
  • 返回指定分數範圍成員個數 zcount key min max
  • 刪除指定排名內的升序元素 zremrangebyrank key start end
  • 刪除指定分數範圍內成員 zremrangebyscore key min max

集合間的操作

zadd user:ranking:1 1 kris 91 mike 200 frank 220 tim 250 martin 251 tom
zadd user:ranking:2 8 james 77 mike 625 martin 888 tom

  • 交集
  • 並集

內部編碼

  • ziplist(壓縮列表)
  • skiplist (跳躍表)

使用場景

  • 添加用戶贊數
  • 取消用戶贊數
  • 展示獲取用戶贊數最多的十個用戶
  • 展示用戶信息及用戶分數
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章