1. 程式人生 > >redis練習手冊zset主要操作函式小結

redis練習手冊zset主要操作函式小結

http://blog.csdn.net/love__coder/article/details/8676223

redis支援有序集合,即sorted set。sorted set在set的基礎上,增加了排序屬性,是set的升級版。這裡簡要談談sorted set的常用函式:

1)insert

a)  zadd

語法:zadd key score member [[score member] [score member] ...]

解釋:增加一個或多個member【根據score排序】到有序集key中,如果member已經存在,只更新score。返回增加member個數,不包含已經存在的member

  1. [[email protected] ~]# redis-cli   
  2. redis 127.0.0.1:6379> ZADD score 230 zhangsan  
  3. (integer) 1  
  4. redis 127.0.0.1:6379> zadd score 240 lisi 250 wangwu  
  5. (integer) 2  
  6. redis 127.0.0.1:6379> zadd score 100 liuli  
  7. redis 127.0.0.1:6379> zadd score 249 wangwu  
  8. (integer) 0  

              注意:有些redis版本,只能一次新增一個member

2)select

a)zrange

語法:zrange key start stop [withscores]

解釋:返回有續集key中指定範圍【通過索引 start stop】的member[及其score];

  1. redis 127.0.0.1:6379> zrange score 0 -1  #所有元素  
  2. 1) "liuli"  
  3. 2) "zhangsan"  
  4. 3) "lisi"  
  5. 4) "wangwu"  
  6. redis 127.0.0.1:6379> zrange score 0 -1 withscores  #所有member及score  
  7. 1) "liuli"  
  8. 2) "100"  
  9. 3) "zhangsan"  
  10. 4) "230"  
  11. 5) "lisi"  
  12. 6) "240"  
  13. 7) "wangwu"  
  14. 8) "249"  
  15. redis 127.0.0.1:6379> zrange score 0 2 withscores  #前三個元素  
  16. 1) "liuli"  
  17. 2) "100"  
  18. 3) "zhangsan"  
  19. 4) "230"  
  20. 5) "lisi"  
  21. 6) "240"  
  22. redis 127.0.0.1:6379> zrange score 0 -2  #第一個元素到  
  23. 1) "liuli"  
  24. 2) "zhangsan"  
  25. 3) "lisi"  

注意:0,表示第一個元素,-1 表示最後一個元素,-2 表示倒數第二個元素

b)zcount

        語法:zcount key min max

解釋:統計key中score值介於min 和max之間的member個數

  1. redis 127.0.0.1:6379> zrange score 0 -1 withscores  
  2. 1) "liuli"  
  3. 2) "100"  
  4. 3) "zhangsan"  
  5. 4) "230"  
  6. 5) "lisi"  
  7. 6) "240"  
  8. 7) "wangwu"  
  9. 8) "249"  
  10. redis 127.0.0.1:6379> zcount score 230 240  # count(score >=230 && score <=240)  
  11. (integer) 2  
c) zscore

語法:zscore key member

解釋:返回有續集key中member的score

  1. redis 127.0.0.1:6379> zscore score liuli  
  2. "100"  

d)zrevrange

語法:zrevrange key start stop [withscores]

解釋:返回有續集key中指定範圍[通過索引start stop]的member[及score],返回member根據score按降序排列

  1. redis 127.0.0.1:6379> zrevrange score 0 -1 withscores  
  2. 1) "wangwu"  
  3. 2) "249"  
  4. 3) "lisi"  
  5. 4) "240"  
  6. 5) "zhangsan"  
  7. 6) "230"  
  8. 7) "liuli"  
  9. 8) "100"  
  10. redis 127.0.0.1:6379> zrevrange score 1 -2  
  11. 1) "lisi"  
  12. 2) "zhangsan"  

注意:索引0 表示第一個元素,-1 最後一個元素,-2 倒數第二個元素;依次類推

e)zrangebyscore

語法:zrangebyscore key min max [withscores] [limit offset count]

解釋:返回有續集key中,score大於等於min並且小於等於max的member。返回結果按照score遞增的次序排列。可選withscores決定返回結果集中僅僅返回member還是返回member和score;可選引數limit 指定返回結果的數量區間。

  1. redis 127.0.0.1:6379> zrangebyscore score 100 10000 withscores  
  2. 1) "liuli"  
  3. 2) "100"  
  4. 3) "zhangsan"  
  5. 4) "230"  
  6. 5) "lisi"  
  7. 6) "240"  
  8. 7) "wangwu"  
  9. 8) "249"  
  10. redis 127.0.0.1:6379> zrangebyscore score 100 10000  limit 1 3  
  11. 1) "zhangsan"  
  12. 2) "lisi"  
  13. 3) "wangwu"  

f)zrevrangebyscore

語法:zrevrangescore key max min [withscores] [limit offset count]

解釋:返回有續集key中score<=max並且score>=min 的元素,返回結果根據score從大到小順序排列。可選引數withscores決定結果集中是否包含score,可選引數limit 指定返回結果集範圍。

  1. redis 127.0.0.1:6379> zrevrangebyscore score 0 10000  
  2. (empty list or set)  
  3. redis 127.0.0.1:6379> zrevrangebyscore score 10000 0  
  4. 1) "wangwu"  
  5. 2) "lisi"  
  6. 3) "zhangsan"  
  7. 4) "liuli"  
  8. redis 127.0.0.1:6379> zrevrangebyscore score 10000 0 withscores limit 0, 2  
  9. 1) "wangwu"  
  10. 2) "249"  
  11. 3) "lisi"  
  12. 4) "240"  

注意:max在min之前

g)zrank

語法:zrank key member

解釋:根據score從低到高,返回member在有續集中的index

  1. redis 127.0.0.1:6379> zrange score 0 -1  
  2. 1) "liuli"  
  3. 2) "zhangsan"  
  4. 3) "lisi"  
  5. 4) "wangwu"  
  6. redis 127.0.0.1:6379> zrank score liuli  
  7. (integer) 0  
  8. redis 127.0.0.1:6379> zrank score wangwu  
  9. (integer) 3  

h)zrevrank

語法:zrevrank key member

解釋:根據score從高到低排序,返回member在有序集key中的index

  1. redis 127.0.0.1:6379> zrange score 0 -1  
  2. 1) "liuli"  
  3. 2) "zhangsan"  
  4. 3) "lisi"  
  5. 4) "wangwu"  
  6. redis 127.0.0.1:6379> zrevrank score liuli  
  7. (integer) 3  
  8. redis 127.0.0.1:6379> zrevrank score wangwu  
  9. (integer) 0  
i)zcard

語法:zcard key

解釋:返回有續集key的基數

  1. redis 127.0.0.1:6379> zcard score  
  2. (integer) 4  
  3. redis 127.0.0.1:6379> zcard stdu  #有續集不存在返回0  
  4. (integer) 0  

3)update

a)zincrby

語法:zincrby key increment member

解釋:有續集key的member增加增量increment,返回增加後的score

  1. redis 127.0.0.1:6379> zscore score liuli  
  2. "100"  
  3. redis 127.0.0.1:6379> zincrby score 300 liuli  
  4. "400"  
  5. redis 127.0.0.1:6379> zscore score liuli  
  6. "400"  
  7. redis 127.0.0.1:6379> <span style="font-family: Arial, Helvetica, sans-serif;">zincrby </span>score 500 xie  
  8. "500"  

注意:如果member在key中不存在,則新增個member

4)delete

a)zrem

語法:zrem key member [member ...]

解釋:移除有續集中的一個或多個member,返回移除member的個數

  1. redis 127.0.0.1:6379> zrange score 0 -1  
  2. 1) "zhangsan"  
  3. 2) "lisi"  
  4. 3) "wangwu"  
  5. 4) "liuli"  
  6. 5) "xie"  
  7. redis 127.0.0.1:6379> zrem score xie wwww  #www不存在  
  8. (integer) 1  
  9. redis 127.0.0.1:6379> zrange score 0 -1  
  10. 1) "zhangsan"  
  11. 2) "lisi"  
  12. 3) "wangwu"  
  13. 4) "liuli"  

注意:如果member不存在,則忽略

b)zremrangebyrank

語法:zremrangebyrank key start stop

解釋:移除有續集中指定排名範圍【start stop】的元素,返回移除元素個數

  1. redis 127.0.0.1:6379> zrange score 0 -1  
  2. 1) "zhangsan"  
  3. 2) "lisi"  
  4. 3) "wangwu"  
  5. 4) "liuli"  
  6. redis 127.0.0.1:6379> zremrangebyrank score 0 1  
  7. (integer) 2  
  8. redis 127.0.0.1:6379> zrange score 0 -1  
  9. 1) "wangwu"  
  10. 2) "liuli"  

注意:如果stop在start之前,則移除0個

c)zremrangebyscore

語法:zremrangebyscore key min max

解釋:移除有續集中的member,移除member的score大於等於min小於等於max;返回移除元素個數

  1. redis 127.0.0.1:6379> zrange score 0 -1 withscores  
  2. 1) "wangwu"  
  3. 2) "249"  
  4. 3) "liuli"  
  5. 4) "400"  
  6. redis 127.0.0.1:6379> zremrangebyscore score 248 250  
  7. (integer) 1  
  8. redis 127.0.0.1:6379> zrange score 0 -1 withscores  
  9. 1) "liuli"  
  10. 2) "400"  

5)其他

a)zinterstore

語法:zinterstore destination numkeys  key[key...] [weights weight] [aggregate sum|min|max]

解釋:統計多個有續集的交集,其中有續集key的個數必須以numkeys引數指定,並將統計結果儲存到destination。預設情況下,destination中元素的score是各個有續集key中元素的score之和。使用weights為每個有續集指定個乘法因子,每個有續集的score在傳遞給集合函式(aggregate)之前,先乘以乘法因子。如果沒指定乘法因子weight,預設是1;使用aggregate選項指定交集的聚合方式。min,最小score,max,最大score,sum,求和。

  1. redis 127.0.0.1:6379> zrange score 0 -1 withscores  
  2. 1) "lisi"  
  3. 2) "20"  
  4. 3) "liuli"  
  5. 4) "400"  
  6. redis 127.0.0.1:6379> zrange score1 0 -1 withscores  
  7. 1) "wangwu"  
  8. 2) "20"  
  9. 3) "liuli"  
  10. 4) "30"  
  11. redis 127.0.0.1:6379> zinterstore dest 2 score score1 #交集求和 sum(score.member.score * 1 + score1.member.score * 1)  
  12. (integer) 1  
  13. redis 127.0.0.1:6379> zrange dest 0 -1 withscores  
  14. 1) "liuli"  
  15. 2) "430"  
  16. redis 127.0.0.1:6379> zinterstore dest 2 score score1 weights 1 2 #交集求和,sum(score.member.score * 1 + score1.member.score * 2)  
  17. (integer) 1  
  18. redis 127.0.0.1:6379> zrange dest 0 -1 withscores  
  19. 1) "liuli"  
  20. 2) "460"  
  21. redis 127.0.0.1:6379> zinterstore dest 2 score score1 aggregate min #交集求最小值,min(score.member.score * 1 , score1.member.score * 1)  
  22. (integer) 1  
  23. redis 127.0.0.1:6379> zrange dest 0 -1 withscores  
  24. 1) "liuli"  
  25. 2) "30"  
  26. redis 127.0.0.1:6379> zinterstore dest 2 score score1 aggregate max #交集求最大值 max(score.member.score * 1 , score1.member.score * 1)  
  27. (integer) 1  
  28. redis 127.0.0.1:6379> zrange dest 0 -1 withscores  
  29. 1) "liuli"  
  30. 2) "400"  
  31. redis 127.0.0.1:6379> zinterstore dest 2 score score1 aggregate sum  #交集求和,sum(score.member.score * 1 , score1.member.score * 1)  
  32. 相關推薦

    redis練習手冊zset主要操作函式小結

    http://blog.csdn.net/love__coder/article/details/8676223 redis支援有序集合,即sorted set。sorted set在set的基礎上,增加了排序屬性,是set的升級版。這裡簡要談談sorted se

    redis練習手冊set主要操作函式小結

    redis set 是string型別物件的無序集合,set不管儲存多少物件,對儲存物件的add,remove和test操作的時間複雜度是O(1)。set最多能包含 232 - 1 個member。 1、增加 語法:sadd key member[member...

    Redis系列-儲存篇list主要操作函式小結

    在總結list之前,先要弄明白幾個跟list相關的概念: 列表:一個從左到右的佇列,個人理解更類似於一個棧,常規模式下,先進列表的元素,後出。 表頭元素:列表最左端第一個元素。 表尾元素:列表最右端的最後一個元素。不包含任何元素的列表成為空列表。 1)新增 a)lpush

    Redis系列-key相關主要操作函式

    這篇blog主要總結下,redis中跟key相關的常用函式 1)keys 語法:keys pattern 解釋:查詢所有匹配指定模式pattern的key [[email protected] ~]# redis-cli redis 127.0.0.1:6379

    redis中set的主要操作函式

    redis set 是string型別物件的無序集合,set不管儲存多少物件,對儲存物件的add,remove和test操作的時間複雜度是O(1)。set最多能包含 232 - 1 個member。1、增加語法:sadd key member[member...]     

    python 檔案和路徑操作函式小結

    1.  檔案路徑的相關處理 用 os.path 就完全解決所有問題,包括路徑拼接、路徑拆分、相對路徑提取、檔案存在性判斷、檔案遍歷、遞迴遍歷等等。相關函式有: os.path.join os.path.basename os.path.exists o

    redis練習手冊redis的配置檔案redis.conf介紹

    如果希望使用redis.conf 啟動redis 需要在啟動redis-server 後加上 redis.conf ,否則會使用預設配置啟動reids  # ./src/redis-server redis.conf redis.conf 配

    Redis系列-儲存hash主要操作命令

    Redis系列-儲存篇hash主要操作函式小結 hash是一些列key value(field value)的對映表。常常用其儲存一些物件例項。相對於把一個物件的各個欄位儲存為string,儲存為hash會佔用更少的記憶體。為什麼會更省記憶體呢?需要搞清楚兩個配置(hash-max-zipmap-entrie

    redis數據類型五之zset操作指令

    redis數據類型 redis zset的操作指令 1、看看官方文檔,學學英文啦: 如圖示,有序集合是一種介於 Set 和 Hash數據類型的 類型。像 sets 呢,是因為它由唯一的、不重復的字符串元素組合而成,所以從某種意思上說它也是一個集合。像 hash

    PHP 操作 Redis手冊

    ins true 刪除元素 hello set集合 安全 name 二進制 關聯數組 轉:https://www.cnblogs.com/jackluo/p/5708024.html String 類型操作 string是redis最基本的類型,而且string類型是二進制

    redis 有序集合(zset)函式

    redis 有序集合(zset)函式   zAdd 命令/方法/函式 Adds the specified member with a given score to the sorted set stored at key. 增加一個或多個元素,如果該元素已經存在,更新它的socre值

    Android NDK——必知必會之JNI的C++操作函式詳解和小結(三)

    引言 上一篇講解了一些關於JNI和NDK的必知必會的理論知識和機制,由於篇幅問題把關於JNI的重要的函式放到這篇,具體使用留到下一篇,此係列文章基連結: 一、JNI中的函式概述 在JNI層我們基本上都是通過env指標來呼叫jni.h標頭檔案裡定義的函式,JNI

    redis 學習手冊之事務 transaction 操作

    事務操作 概述 Redis事務讓一組命令在單個步驟中執行。 事務中有兩個屬性,這說明如下: 在一個事務中所有命令按順序執行,作為一個單一獨立的操作。 Redis事務也是原子的。原子就意味著要麼所有命令都執行,要麼都不進行處理。 但是Redis的Transactions

    redis zset 相關操作 瞭解下

    工作中用到, 百度找到並試用無好使的程式碼,記錄下 Zset跟Set之間可以有並集運算,因為他們儲存的資料字串集合,不能有一樣的成員出現在一個zset中,但是為什麼有了set還要有zset呢?zset叫做有序集合,而set是無序的,zset怎麼做到有序的呢?就是zset的每

    redis--(六)java操作redis

    技術分享 http ges 分享 .cn -1 -- edi image Java操作redis集群 redis--(六)java操作redis

    string主要操作函數

    風格 末尾 情況 int start 兩個 first c++ mil 轉義 參考博客:http://blog.csdn.net/zhenyusoso/article/details/7286456 std::string illegal(" \t\f\v\n\r\\/

    Redis 學習之路 (010) - redis命令手冊

    哈希 sts 集中 cluster htm second 不同 index scribe Redis 鍵(key) 命令 命令描述 Redis DEL 命令 該命令用於在 key 存在是刪除 key。 Redis Dump 命令 序列化給定 key ,並返回被

    前端工程師養成手冊——基礎學習——第一周小結

    clear amp 多個 () readline find 第一周 數組排序 工程師 第五章關鍵點總結 數組與集合的對比 1、都是用來保存多個同類型的數據,數組具有定長性,而集合不具有定長性,因此保存數量固定的數據時可以用數組,數量會發生變化的可以用集合; 2、數組建立後,

    W3School Redis教程(安裝/基本操作/高級操作/命令)

    redis force rdf get http redis教程 sch emca com 來自W3School的Memcached教程,基本上涵蓋了從安裝到狀態監控的教程。 W3School:https://www.gitbook.com/book/wizardforc

    Redis數據庫常用操作

    bottom spa 停止 height 屬性 contain -h one splay 啟動sudo service redis start 停止sudo service redis stop 重啟sudo service redis restart 啟動客戶端redis