Redis學習筆記(6)-SortedSet

來源:互聯網
上載者:User

標籤:

package cn.com;import java.util.HashMap;import java.util.Map;import java.util.Set;import redis.clients.jedis.Jedis;import redis.clients.jedis.Tuple;/** * 有序集合的所有操作方法 *  * */public class Redis_SortedSet {public static Jedis redis = new Jedis("localhost", 6379);// 串連redis /** * ZADD key score member [[score member] [score member] ...] * 將一個或多個 member 元素及其 score 值加入到有序集 key 當中。 * 如果某個 member 已經是有序集的成員,那麼更新這個 member 的 score 值,並通過重新插入這個 member 元素,來保證該 member 在正確的位置上。 * score 值可以是整數值或雙精確度浮點數。 * 如果 key 不存在,則建立一個空的有序集並執行 ZADD 操作。 * 當 key 存在但不是有序集類型時,返回一個錯誤。 * */public static void zadd(){redis.flushDB();//清除資料Map<String,Double> agemap=new HashMap<String,Double>();agemap.put("age1", 1.0);agemap.put("age2", 2.0);agemap.put("age4", 4.0);agemap.put("age3", 3.0);agemap.put("age9", 9.0);agemap.put("age5", 5.0);redis.zadd("user", agemap);Set<String> list=redis.zrange("user", 0, -1);for(String s:list){System.out.println(s);}}/** * 返回有序集 key 的基數。 * */public static void zcard(){redis.flushDB();//清除資料Map<String,Double> agemap=new HashMap<String,Double>();agemap.put("age1", 1.0);agemap.put("age2", 2.0);agemap.put("age4", 4.0);agemap.put("age3", 3.0);agemap.put("age9", 9.0);agemap.put("age5", 5.0);redis.zadd("user", agemap);Long length=redis.zcard("user");System.out.println(length);}/** * ZCOUNT key min max * 返回有序集 key 中, score 值在 min 和 max 之間(預設包括 score 值等於 min 或 max )的成員的數量。 * */public static void zcount(){redis.flushDB();//清除資料Map<String,Double> agemap=new HashMap<String,Double>();agemap.put("age1", 1.0);agemap.put("age2", 2.0);agemap.put("age4", 4.0);agemap.put("age3", 3.0);agemap.put("age9", 9.0);agemap.put("age5", 5.0);redis.zadd("user", agemap);Long number=redis.zcount("user", 5,9);System.out.println(number);}/** * ZINCRBY key increment member *為有序集 key 的成員 member 的 score 值加上增量 increment 。 *可以通過傳遞一個負數值 increment ,讓 score 減去相應的值,比如 ZINCRBY key -5 member ,就是讓 member 的 score 值減去 5 。 *當 key 不存在,或 member 不是 key 的成員時, ZINCRBY key increment member 等同於 ZADD key increment member 。 *當 key 不是有序集類型時,返回一個錯誤。 *score 值可以是整數值或雙精確度浮點數 * */public static void zincrby(){redis.flushDB();//清除資料Map<String,Double> agemap=new HashMap<String,Double>();agemap.put("age1", 1.0);agemap.put("age2", 2.0);agemap.put("age4", 4.0);agemap.put("age3", 3.0);agemap.put("age9", 9.0);agemap.put("age5", 5.0);redis.zadd("user", agemap);redis.zincrby("user", 55,"age5");Set<String> list=redis.zrange("user", 0, -1);for(String s:list){System.out.println(s);}}/** * ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX] * 計算給定的一個或多個有序集的交集,其中給定 key 的數量必須以 numkeys 參數指定,並將該交集(結果集)儲存到 destination 。 * 預設情況下,結果集中某個成員的 score 值是所有給定集下該成員 score 值之和. * */public static void zinterstore(){redis.flushDB();//清除資料  redis.zadd("user", 1, "age1");redis.zadd("user", 3, "age3");redis.zadd("user", 6, "age6");redis.zadd("user", 2, "age2");redis.zadd("user", 8, "age8");redis.zadd("user1", 11, "age1");redis.zadd("user1", 33, "age3");redis.zadd("user1", 66, "age6");redis.zadd("user1", 22, "age2");redis.zadd("user1", 88, "age8");redis.zadd("user1", 99, "age9");redis.zinterstore("newset",new String[]{"user","user1"});Set<String> list=redis.zrange("newset", 0, -1);for(String s:list){System.out.println(s);}}/** * 返回有序集 key 中,所有 score 值介於 min 和 max 之間(包括等於 min 或 max )的成員。有序整合員按 score 值遞增(從小到大)次序排列。  * 可選的 LIMIT 參數指定返回結果的數量及區間(就像SQL中的 SELECT LIMIT offset, count ),注意當 offset 很大時,定位 offset 的操作可能需要遍曆整個有序集,此過程最壞複雜度為 O(N) 時間。 * 可選的 WITHSCORES 參數決定結果集是單單返回有序集的成員,還是將有序整合員及其 score 值一起返回。 * */public static void zrangeByScore(){redis.flushDB();//清除資料redis.zadd("user", 1, "age1");redis.zadd("user", 11, "age11");redis.zadd("user", 111, "age111");redis.zadd("user", 3, "age3");redis.zadd("user", 33, "age33");redis.zadd("user", 333, "age333");redis.zadd("user", 6, "age6");redis.zadd("user", 66, "age6");redis.zadd("user", 666, "age666");redis.zadd("user", 2, "age2");redis.zadd("user", 22, "age22");redis.zadd("user", 222, "age222");redis.zadd("user", 8, "age8");redis.zadd("user", 9, "age9");redis.zadd("user", 9, "age9");Set<String> list=redis.zrangeByScore("user", 100, 700);for(String s:list){System.out.println(s);}}/** * ZRANK key member * 返回有序集 key 中成員 member 的排名。其中有序整合員按 score 值遞增(從小到大)順序排列。 * 排名以 0 為底,也就是說, score 值最小的成員排名為 0 。 * */public static void rand(){redis.flushDB();redis.zadd("user", 1, "age1");redis.zadd("user", 11, "age11");redis.zadd("user", 111, "age111");long number=redis.zrank("user", "age11");//number 顯示的位1 低名是從0 開始 age11 排名為第一System.out.println(number);}/** * ZREM key member [member ...]  * 移除有序集 key 中的一個或多個成員,不存在的成員將被忽略。 * 當 key 存在但不是有序集類型時,返回一個錯誤 * */public static void zrem(){redis.flushDB();redis.zadd("user", 1, "age1");redis.zadd("user", 2, "age2");redis.zadd("user", 3, "age3");redis.zadd("user", 4, "age4");redis.zadd("user", 5, "age5");redis.zrem("user", "age2","age5");Set<String> list=redis.zrange("user",0,-1);for(String s:list){System.out.println(s);}}/** * 取排名在stat -end 之間的Tuple (strt 和end 指的指的是在集合中的排名 並非是score) * Tuple 包含key 和 score * */public static void zrangeWithScores(){redis.flushDB();redis.zadd("user", 11, "age1");redis.zadd("user", 22, "age2");redis.zadd("user", 33, "age3");redis.zadd("user", 44, "age4");redis.zadd("user", 55, "age5");Set<Tuple> list= redis.zrangeWithScores("user", 0, 2);for(Tuple s:list){System.out.println(s.getElement()+" store:"+s.getScore());}}/** * 取排名在stat -end 之間的Tuple (strt 和end 指的是儲存的score ) * Tuple 包含key 和 score * */public static void zrangeByScoreWithScores(){redis.flushDB();redis.zadd("user", 11, "age1");redis.zadd("user", 22, "age2");redis.zadd("user", 33, "age3");redis.zadd("user", 44, "age4");redis.zadd("user", 55, "age5");Set<Tuple> list=redis.zrangeByScoreWithScores("user", 0, 35);for(Tuple s:list){System.out.println(s.getElement()+" store:"+s.getScore());}}/** * 刪除 排序號在 strt-end 之間的元素 * */public static void zremrangeByRank(){redis.flushDB();redis.zadd("user", 11, "age1");redis.zadd("user", 22, "age2");redis.zadd("user", 333, "age33");redis.zadd("user", 44, "age4");redis.zadd("user", 55, "age5");redis.zadd("user", 66, "age6");redis.zadd("user", 77, "age7");redis.zremrangeByRank("user", 0, 3);Set<String> list=redis.zrange("user", 0, -1);for(String s:list){System.out.println(s);}}/** * 倒序排列集合 * @param key (max最大score) (min 最小score) * */public static void zrevrangeByScore(){redis.flushDB();redis.zadd("user", 11, "age1");redis.zadd("user", 22, "age2");redis.zadd("user", 333, "age33");redis.zadd("user", 44, "age4");redis.zadd("user", 55, "age5");Set<String> list=redis.zrevrangeByScore("user", 55, 0);for(String s:list){System.out.println(s);}}/** * 倒序取score 範圍 max-min 之間的元素 * */public static void zrevrangeByScoreWithScores(){redis.flushDB();redis.zadd("user", 11, "age1");redis.zadd("user", 22, "age2");redis.zadd("user", 333, "age33");redis.zadd("user", 44, "age4");redis.zadd("user", 55, "age5");redis.zadd("user", 66, "age6");redis.zadd("user", 77, "age7");Set<Tuple> list=redis.zrevrangeByScoreWithScores("user", 66, 22);for(Tuple s:list){System.out.println(s.getElement()+" store:"+s.getScore());}}/** * 倒序排列集合 * @param key star-end 取排序範圍 * */public static void zrevrangeWithScores(){redis.flushDB();redis.zadd("user", 11, "age1");redis.zadd("user", 22, "age2");redis.zadd("user", 333, "age33");redis.zadd("user", 44, "age4");redis.zadd("user", 55, "age5");Set<Tuple> list=redis.zrevrangeWithScores("user", 0, 3);for(Tuple s:list){System.out.println(s.getElement()+" score:"+s.getScore());}}/** * 刪除 key 在 score的值在star-end 之間的值  * */public static void zremrangeByScore(){redis.flushDB();redis.zadd("user", 11, "age1");redis.zadd("user", 22, "age2");redis.zadd("user", 33, "age3");redis.zadd("user", 44, "age4");redis.zadd("user", 55, "age5");redis.zremrangeByScore("user", 0, 22);Set<String> list=redis.zrange("user", 0, -1);for(String s:list){System.out.println(s);}}/** * 返回 key 中member 中的排名值 * */public static void zrevrank(){redis.flushDB();redis.zadd("user", 11, "age1");redis.zadd("user", 22, "age2");redis.zadd("user", 33, "age3");redis.zadd("user", 44, "age4");redis.zadd("user", 55, "age5");long l=redis.zrevrank("user", "age3");System.out.println(l); }/** * 返回有序集 key 中,指定區間內的成員。 * 其中成員的位置按 score 值遞增(從小到大)來排序。 * 具有相同 score 值的成員按字典序(lexicographical order )來排列。 * */public static void zrange(){redis.flushDB();//清除資料Map<String,Double> agemap=new HashMap<String,Double>();agemap.put("age1", 1.0);agemap.put("age2", 2.0);agemap.put("age4", 4.0);agemap.put("age3", 3.0);agemap.put("age9", 9.0);agemap.put("age5", 5.0);redis.zadd("user", agemap);redis.zincrby("user", 55,"age5");Set<String> list=redis.zrange("user", 0, -1);for(String s:list){System.out.println(s);}}/** * 求兩個集合的並集 * */public static void zunionstore(){redis.flushDB();//清除資料redis.zadd("user", 1, "age1");redis.zadd("user", 3, "age3");redis.zadd("user", 6, "age6");redis.zadd("user", 2, "age2");redis.zadd("user", 10, "age10");redis.zadd("user1", 11, "age1");redis.zadd("user1", 33, "age3");redis.zadd("user1", 66, "age6");redis.zadd("user1", 22, "age2");redis.zadd("user1", 88, "age8");redis.zadd("user1", 99, "age9");redis.zunionstore("newset",new String[]{"user","user1"});Set<String> list=redis.zrange("newset", 0, -1);for(String s:list){System.out.println(s);}} public static void main(String [] args){zrevrangeByScoreWithScores();}}

  

Redis學習筆記(6)-SortedSet

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.