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 相关的一些基本用法。这里还有一些关于排序集合的介绍。
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。 2KB翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务