多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] # 简介 有序集合 sortedset中存储的成员都有一个附带的分数值,而redis就可以根据分数来对成员进行各种排序 ![](https://box.kancloud.cn/62de9af8b150fb2f464052682650e2c3_910x426.png) # 命令行 ![](https://box.kancloud.cn/97a62c0f8ce33cd565cbcfb0577c35b1_627x734.png) ![](https://box.kancloud.cn/458ea86f76a24f7015c77f23bc4314fb_442x124.png) # 代码 制作排行榜 ~~~ Jedis jedis = init(); Random random = new Random(); String[] heros = {"易大师", "德邦", "剑姬", "阿卡丽", "金克斯", "提莫", "猴子", "亚索"}; while (true) { int index = random.nextInt(heros.length); //选择一个英雄 String hero = heros[index]; //开始玩游戏 Thread.sleep(1000); //给集合中的该英雄的出场次数加1 //第一次添加的时候,集合不存在,zincrby方法创建,有就把值加1 /** Redis Zincrby 命令对有序集合中指定成员的分数加上增量 increment 可以通过传递一个负数值 increment ,让分数减去相应的值,比如 ZINCRBY key -5 member ,就是让 member 的 score 值减去 5 。 当 key 不存在,或分数不是 key 的成员时, ZINCRBY key increment member 等同于 ZADD key increment member 。 当 key 不是有序集类型时,返回一个错误。 分数值可以是整数值或双精度浮点数 */ jedis.zincrby("hero:ccl:phb", 1, hero); System.out.println(hero + "出场了..."); } ~~~ 查看排行榜 ~~~ Jedis jedis = init(); int i = 1; while (true) { //每隔3秒查看一次榜单 Thread.sleep(3000); System.out.println("第" + i + "次查看榜单-----------"); //从redis中查询榜单的前n名 Set<Tuple> tuples = jedis.zrevrangeWithScores("hero:ccl:phb", 0, 4); for (Tuple t : tuples) { System.out.println(t.getElement() + " " + t.getScore()); } i++; System.out.println(""); } ~~~