日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

redis之Set(有序)类型常用方法总结

發布時間:2023/12/18 编程问答 26 如意码农
生活随笔 收集整理的這篇文章主要介紹了 redis之Set(有序)类型常用方法总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

redis之Set(有序)類型常用方法總結

存--ZADD key [NX|XX] [CH] [INCR] score member [score member ...]
  • XX: 僅僅更新存在的成員,不添加新成員。
  • NX: 不更新存在的成員。只添加新成員。
  • CH: 修改返回值為發生變化的成員總數,原始是返回新添加成員的總數 (CH 是 changed 的意思)。更改的元素是新添加的成員,已經存在的成員更新分數。 所以在命令中指定的成員有相同的分數將不被計算在內。注:在通常情況下,ZADD返回值只計算新添加成員的數量。
  • INCR: 當ZADD指定這個選項時,成員的操作就等同ZINCRBY命令,對成員的分數進行遞增操作。
取--ZRANGE key start stop [WITHSCORES]
  1. ZADD key score1 member1 [score2 member2] 向有序集合添加一個或多個成員,或者更新已存在成員的分數

    redis> ZADD myzset 1 "one"
    (integer) 1
    redis> ZADD myzset 1 "uno"
    (integer) 1
    redis> ZADD myzset 2 "two" 3 "three"
    (integer) 2
    redis> ZRANGE myzset 0 -1 WITHSCORES
    1) "one"
    2) "1"
    3) "uno"
    4) "1"
    5) "two"
    6) "2"
    7) "three"
    8) "3"
    redis>
  2. ZCARD key 獲取有序集合的成員數

    redis> ZADD myzset 1 "one"
    (integer) 1
    redis> ZADD myzset 2 "two"
    (integer) 1
    redis> ZCARD myzset
    (integer) 2
    redis>
  3. ZCOUNT key min max 計算在有序集合中指定區間分數的成員數

    redis 127.0.0.1:6379> ZADD myzset 1 "hello"
    (integer) 1
    redis 127.0.0.1:6379> ZADD myzset 1 "foo"
    (integer) 1
    redis 127.0.0.1:6379> ZADD myzset 2 "world" 3 "bar"
    (integer) 2
    redis 127.0.0.1:6379> ZCOUNT myzset 1 3
    (integer) 4
  4. ZINCRBY key increment member 有序集合中對指定成員的分數加上增量 increment

    redis> ZADD myzset 1 "one"
    (integer) 1
    redis> ZADD myzset 2 "two"
    (integer) 1
    redis> ZINCRBY myzset 2 "one"
    "3"
    redis> ZRANGE myzset 0 -1 WITHSCORES
    1) "two"
    2) "2"
    3) "one"
    4) "3"
    redis>
  5. ZINTERSTORE destination numkeys key [key ...] 計算給定的一個或多個有序集的交集并將結果集存儲在新的有序集合 key 中

    # 有序集 mid_test
    redis 127.0.0.1:6379> ZADD mid_test 70 "Li Lei"
    (integer) 1
    redis 127.0.0.1:6379> ZADD mid_test 70 "Han Meimei"
    (integer) 1
    redis 127.0.0.1:6379> ZADD mid_test 99.5 "Tom"
    (integer) 1 # 另一個有序集 fin_test
    redis 127.0.0.1:6379> ZADD fin_test 88 "Li Lei"
    (integer) 1
    redis 127.0.0.1:6379> ZADD fin_test 75 "Han Meimei"
    (integer) 1
    redis 127.0.0.1:6379> ZADD fin_test 99.5 "Tom"
    (integer) 1 # 交集
    redis 127.0.0.1:6379> ZINTERSTORE sum_point 2 mid_test fin_test
    (integer) 3 # 顯示有序集內所有成員及其分數值
    redis 127.0.0.1:6379> ZRANGE sum_point 0 -1 WITHSCORES
    1) "Han Meimei"
    2) "145"
    3) "Li Lei"
    4) "158"
    5) "Tom"
    6) "199"
  6. ZLEXCOUNT key min max 在有序集合中計算指定字典區間內成員數量

    redis 127.0.0.1:6379> ZADD myzset 0 a 0 b 0 c 0 d 0 e
    (integer) 5
    redis 127.0.0.1:6379> ZADD myzset 0 f 0 g
    (integer) 2
    redis 127.0.0.1:6379> ZLEXCOUNT myzset - +
    (integer) 7
    redis 127.0.0.1:6379> ZLEXCOUNT myzset [b [f
    (integer) 5
  7. ZRANGE key start stop [WITHSCORES] 通過索引區間返回有序集合成指定區間內的成員

    redis 127.0.0.1:6379> ZRANGE salary 0 -1 WITHSCORES             # 顯示整個有序集成員
    1) "jack"
    2) "3500"
    3) "tom"
    4) "5000"
    5) "boss"
    6) "10086" redis 127.0.0.1:6379> ZRANGE salary 1 2 WITHSCORES # 顯示有序集下標區間 1 至 2 的成員
    1) "tom"
    2) "5000"
    3) "boss"
    4) "10086" redis 127.0.0.1:6379> ZRANGE salary 0 200000 WITHSCORES # 測試 end 下標超出最大下標時的情況
    1) "jack"
    2) "3500"
    3) "tom"
    4) "5000"
    5) "boss"
    6) "10086" redis > ZRANGE salary 200000 3000000 WITHSCORES # 測試當給定區間不存在于有序集時的情況
    (empty list or set)
  8. ZRANGEBYLEX key min max [LIMIT offset count] 通過字典區間返回有序集合的成員

    redis 127.0.0.1:6379> ZADD myzset 0 a 0 b 0 c 0 d 0 e 0 f 0 g
    (integer) 7
    redis 127.0.0.1:6379> ZRANGEBYLEX myzset - [c
    1) "a"
    2) "b"
    3) "c"
    redis 127.0.0.1:6379> ZRANGEBYLEX myzset - (c
    1) "a"
    2) "b"
    redis 127.0.0.1:6379> ZRANGEBYLEX myzset [aaa (g
    1) "b"
    2) "c"
    3) "d"
    4) "e"
    5) "f"
    redis>
  9. ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT] 通過分數返回有序集合指定區間內的成員

    redis 127.0.0.1:6379> ZADD salary 2500 jack                        # 測試數據
    (integer) 0
    redis 127.0.0.1:6379> ZADD salary 5000 tom
    (integer) 0
    redis 127.0.0.1:6379> ZADD salary 12000 peter
    (integer) 0 redis 127.0.0.1:6379> ZRANGEBYSCORE salary -inf +inf # 顯示整個有序集
    1) "jack"
    2) "tom"
    3) "peter" redis 127.0.0.1:6379> ZRANGEBYSCORE salary -inf +inf WITHSCORES # 顯示整個有序集及成員的 score 值
    1) "jack"
    2) "2500"
    3) "tom"
    4) "5000"
    5) "peter"
    6) "12000" redis 127.0.0.1:6379> ZRANGEBYSCORE salary -inf 5000 WITHSCORES # 顯示工資 <=5000 的所有成員
    1) "jack"
    2) "2500"
    3) "tom"
    4) "5000" redis 127.0.0.1:6379> ZRANGEBYSCORE salary (5000 400000 # 顯示工資大于 5000 小于等于 400000 的成員
    1) "peter"
  10. ZRANK key member 返回有序集合中指定成員的索引

    redis 127.0.0.1:6379> ZRANGE salary 0 -1 WITHSCORES        # 顯示所有成員及其 score 值
    1) "peter"
    2) "3500"
    3) "tom"
    4) "4000"
    5) "jack"
    6) "5000" redis 127.0.0.1:6379> ZRANK salary tom # 顯示 tom 的薪水排名,第二
    (integer) 1
  11. ZREM key member [member ...] 移除有序集合中的一個或多個成員

    # 測試數據
    
    redis 127.0.0.1:6379> ZRANGE page_rank 0 -1 WITHSCORES
    1) "bing.com"
    2) "8"
    3) "baidu.com"
    4) "9"
    5) "google.com"
    6) "10" # 移除單個元素 redis 127.0.0.1:6379> ZREM page_rank google.com
    (integer) 1 redis 127.0.0.1:6379> ZRANGE page_rank 0 -1 WITHSCORES
    1) "bing.com"
    2) "8"
    3) "baidu.com"
    4) "9" # 移除多個元素 redis 127.0.0.1:6379> ZREM page_rank baidu.com bing.com
    (integer) 2 redis 127.0.0.1:6379> ZRANGE page_rank 0 -1 WITHSCORES
    (empty list or set) # 移除不存在元素 redis 127.0.0.1:6379> ZREM page_rank non-exists-element
    (integer) 0
  12. ZREMRANGEBYLEX key min max 移除有序集合中給定的字典區間的所有成員

    redis 127.0.0.1:6379> ZADD myzset 0 aaaa 0 b 0 c 0 d 0 e
    (integer) 5
    redis 127.0.0.1:6379> ZADD myzset 0 foo 0 zap 0 zip 0 ALPHA 0 alpha
    (integer) 5
    redis 127.0.0.1:6379> ZRANGE myzset 0 -1
    1) "ALPHA"
    2) "aaaa"
    3) "alpha"
    4) "b"
    5) "c"
    6) "d"
    7) "e"
    8) "foo"
    9) "zap"
    10) "zip"
    redis 127.0.0.1:6379> ZREMRANGEBYLEX myzset [alpha [omega
    (integer) 6
    redis 127.0.0.1:6379> ZRANGE myzset 0 -1
    1) "ALPHA"
    2) "aaaa"
    3) "zap"
    4) "zip"
    redis>
  13. ZREMRANGEBYRANK key start stop 移除有序集合中給定的排名區間的所有成員

    redis 127.0.0.1:6379> ZADD salary 2000 jack
    (integer) 1
    redis 127.0.0.1:6379> ZADD salary 5000 tom
    (integer) 1
    redis 127.0.0.1:6379> ZADD salary 3500 peter
    (integer) 1 redis 127.0.0.1:6379> ZREMRANGEBYRANK salary 0 1 # 移除下標 0 至 1 區間內的成員
    (integer) 2 redis 127.0.0.1:6379> ZRANGE salary 0 -1 WITHSCORES # 有序集只剩下一個成員
    1) "tom"
    2) "5000"
  14. ZREMRANGEBYSCORE key min max 移除有序集合中給定的分數區間的所有成員

    redis 127.0.0.1:6379> ZRANGE salary 0 -1 WITHSCORES          # 顯示有序集內所有成員及其 score 值
    1) "tom"
    2) "2000"
    3) "peter"
    4) "3500"
    5) "jack"
    6) "5000" redis 127.0.0.1:6379> ZREMRANGEBYSCORE salary 1500 3500 # 移除所有薪水在 1500 到 3500 內的員工
    (integer) 2 redis> ZRANGE salary 0 -1 WITHSCORES # 剩下的有序集成員
    1) "jack"
    2) "5000"
  15. ZREVRANGE key start stop [WITHSCORES] 返回有序集中指定區間內的成員,通過索引,分數從高到底

    redis 127.0.0.1:6379> ZRANGE salary 0 -1 WITHSCORES        # 遞增排列
    1) "peter"
    2) "3500"
    3) "tom"
    4) "4000"
    5) "jack"
    6) "5000" redis 127.0.0.1:6379> ZREVRANGE salary 0 -1 WITHSCORES # 遞減排列
    1) "jack"
    2) "5000"
    3) "tom"
    4) "4000"
    5) "peter"
    6) "3500"
  16. ZREVRANGEBYSCORE key max min [WITHSCORES] 返回有序集中指定分數區間內的成員,分數從高到低排序

    redis 127.0.0.1:6379> ZADD salary 10086 jack
    (integer) 1
    redis > ZADD salary 5000 tom
    (integer) 1
    redis 127.0.0.1:6379> ZADD salary 7500 peter
    (integer) 1
    redis 127.0.0.1:6379> ZADD salary 3500 joe
    (integer) 1 redis 127.0.0.1:6379> ZREVRANGEBYSCORE salary +inf -inf # 逆序排列所有成員
    1) "jack"
    2) "peter"
    3) "tom"
    4) "joe" redis 127.0.0.1:6379> ZREVRANGEBYSCORE salary 10000 2000 # 逆序排列薪水介于 10000 和 2000 之間的成員
    1) "peter"
    2) "tom"
    3) "joe"
  17. ZREVRANK key member 返回有序集合中指定成員的排名,有序集成員按分數值遞減(從大到小)排序

    redis 127.0.0.1:6379> ZRANGE salary 0 -1 WITHSCORES     # 測試數據
    1) "jack"
    2) "2000"
    3) "peter"
    4) "3500"
    5) "tom"
    6) "5000" redis 127.0.0.1:6379> ZREVRANK salary peter # peter 的工資排第二
    (integer) 1 redis 127.0.0.1:6379> ZREVRANK salary tom # tom 的工資最高
    (integer) 0
  18. ZSCORE key member 返回有序集中,成員的分數值

    redis 127.0.0.1:6379> ZRANGE salary 0 -1 WITHSCORES    # 測試數據
    1) "tom"
    2) "2000"
    3) "peter"
    4) "3500"
    5) "jack"
    6) "5000" redis 127.0.0.1:6379> ZSCORE salary peter # 注意返回值是字符串
    "3500"
  19. ZUNIONSTORE destination numkeys key [key ...] 計算給定的一個或多個有序集的并集,并存儲在新的 key 中

    redis 127.0.0.1:6379> ZRANGE programmer 0 -1 WITHSCORES
    1) "peter"
    2) "2000"
    3) "jack"
    4) "3500"
    5) "tom"
    6) "5000" redis 127.0.0.1:6379> ZRANGE manager 0 -1 WITHSCORES
    1) "herry"
    2) "2000"
    3) "mary"
    4) "3500"
    5) "bob"
    6) "4000" redis 127.0.0.1:6379> ZUNIONSTORE salary 2 programmer manager WEIGHTS 1 3 # 公司決定加薪。。。除了程序員。。。
    (integer) 6 redis 127.0.0.1:6379> ZRANGE salary 0 -1 WITHSCORES
    1) "peter"
    2) "2000"
    3) "jack"
    4) "3500"
    5) "tom"
    6) "5000"
    7) "herry"
    8) "6000"
    9) "mary"
    10) "10500"
    11) "bob"
    12) "12000"
  20. ZSCAN key cursor [MATCH pattern] [COUNT count] 迭代有序集合中的元素(包括元素成員和元素分值)?


總結

以上是生活随笔為你收集整理的redis之Set(有序)类型常用方法总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。