通過 Jedis API 使用 Sorted Set 排序集合
Jedis 是 Redis 官方首選的 Java 客戶端開發包。這篇文章我們將介紹如何使用 Sorted Set 排序集合(zsets)。
Sorted Set 跟一個集合一樣,它是不會存在重復的數值,最大的不同是 Sorted Set 中每個元素都是經過排序的。
我們先看一些命令:
import java.util.HashMap; import java.util.Map; import redis.clients.jedis.Jedis; public class TestJedis { public static void main(String[] args) { String key = "mostUsedLanguages"; Jedis jedis = new Jedis("localhost"); //Adding a value with score to the set jedis.zadd(key,100,"Java");//ZADD //We could add more than one value in one calling Map<Double, String> scoreMembers = new HashMap<Double, String>(); scoreMembers.put(90d, "Python"); scoreMembers.put(80d, "Javascript"); jedis.zadd(key, scoreMembers); //We could get the score for a member System.out.println("Number of Java users:" + jedis.zscore(key, "Java")); //We could get the number of elements on the set System.out.println("Number of elements:" + jedis.zcard(key));//ZCARD } }
上述例子中我們看到了 Zset 命令,為了將元素添加到 zet 中,我們使用 zadd 方法,不同的是我們還傳遞了一個元素的評分值,我們可以使用 Map 對象來一次傳遞很多個對象,而 zadd 方法可用于增加和更新已有元素的評分值。
我們可使用 zscore 來獲取某元素的評分,通過 zcard 獲取元素個數。
下面的例子我們可看到來自 zsets 的其他命令:
import java.util.Set; import redis.clients.jedis.Jedis; import redis.clients.jedis.Tuple; public class TestJedis { public static void main(String[] args) { String key = "mostUsedLanguages"; Jedis jedis = new Jedis("localhost"); //get all the elements sorted from bottom to top System.out.println(jedis.zrange(key, 0, -1)); //get all the elements sorted from top to bottom System.out.println(jedis.zrevrange(key, 0, -1)); //We could get the elements with the associated score Set<Tuple> elements = jedis.zrevrangeWithScores(key, 0, -1); for(Tuple tuple: elements){ System.out.println(tuple.getElement() + "-" + tuple.getScore()); } //We can increment a score for a element using ZINCRBY System.out.println("Score before zincrby:" + jedis.zscore(key, "Python")); //Incrementing the element score jedis.zincrby(key, 1, "Python"); System.out.println("Score after zincrby:" + jedis.zscore(key, "Python")); } }
通過 zrange 我們能獲取給定范圍的元素,它將返回經過排序后的元素列表(自底向上),也可以通過 zrevrrange 獲取自頂向下的元素列表。Redis 還允許我們通過關聯的評分來獲取元素,傳遞 “withscores“ 參數即可。使用 Jedis API 的 zrevrangeWithScores 方法可返回對象集合。另外一個有用的命令是 zincrby 可用于增加元素的評分值。
zsets 還有其他的命令,這里我們只是介紹跟 Jedis API 相關的一些基本用法。這里還有一些關于排序集合的介紹。
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!