redis 排行榜

2017年08月07日 14:54 | 2905次浏览 作者原创 版权保护
public class RankDemo {
    static int TOTAL_SIZE = 20;
    public static void main(String[] args)
    {
        Jedis jedis = new Jedis(host, port);
        try {
            //实例密码
            String authString = jedis.auth(host+":"+password);//password
            if (!authString.equals("OK"))
            {
                System.err.println("AUTH Failed: " + authString);
                return;
            }
            jedis.select(3);
            //Key(键)
            String key = "游戏名:奔跑吧,千寻!";
            //清除可能的已有数据
            jedis.del(key);
            //模拟生成若干个游戏玩家
            List<String> playerList = new ArrayList<String>();
            for (int i = 0; i < TOTAL_SIZE; ++i)
            {
                //随机生成每个玩家的ID
                playerList.add(UUID.randomUUID().toString());
            }
            System.out.println("输入所有玩家 ");
            //记录每个玩家的得分
            for (int i = 0; i < playerList.size(); i++)
            {
                //随机生成数字,模拟玩家的游戏得分
                int score = (int)(Math.random()*5000);
                String member = playerList.get(i);
                System.out.println("玩家ID:" + member + ", 玩家得分: " + score);
                //将玩家的ID和得分,都加到对应key的SortedSet中去
                jedis.zadd(key, score, member);
            }
            //输出打印全部玩家排行榜
            System.out.println();
            System.out.println("       "+key);
            System.out.println("       全部玩家排行榜                    ");
            //从对应key的SortedSet中获取已经排好序的玩家列表
            Set<Tuple> scoreList = jedis.zrevrangeWithScores(key, 0, -1);
            for (Tuple item : scoreList) {
                System.out.println("玩家ID:"+item.getElement()+", 玩家得分:"+Double.valueOf(item.getScore()).intValue());
            }
            //输出打印Top5玩家排行榜
            System.out.println();
            System.out.println("       "+key);
            System.out.println("       Top 玩家");
            scoreList = jedis.zrevrangeWithScores(key, 0, 4);
            for (Tuple item : scoreList) {
                System.out.println("玩家ID:"+item.getElement()+", 玩家得分:"+Double.valueOf(item.getScore()).intValue());
            }
            //输出打印特定玩家列表
            System.out.println();
            System.out.println("         "+key);
            System.out.println("         积分在1000至2000的玩家");
            //从对应key的SortedSet中获取已经积分在1000至2000的玩家列表
            scoreList = jedis.zrangeByScoreWithScores(key, 1000, 2000);
            for (Tuple item : scoreList) {
                System.out.println("玩家ID:"+item.getElement()+", 玩家得分:"+Double.valueOf(item.getScore()).intValue());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            jedis.quit();
            jedis.close();
        }
    }
}

运行结果

输入所有玩家 
玩家ID:a05f1858-6821-4882-816f-f7f6eab7a231, 玩家得分: 1158
玩家ID:61207aff-8082-43d0-afbe-43b5c66c9097, 玩家得分: 2898
玩家ID:88ad4cd9-555b-4e38-ab21-a4da280b60d8, 玩家得分: 376
玩家ID:d28bb38d-9242-419e-a8e9-b3a448f1d9cf, 玩家得分: 3178
玩家ID:1c92c17c-9dfb-41c7-ac3e-5fa9d9faa9a7, 玩家得分: 3762
玩家ID:ca76a887-3ce3-41a2-8e5d-7f6d8fcaebca, 玩家得分: 1912
玩家ID:32e297ce-b06b-4dee-8889-664020a63f3a, 玩家得分: 1194
玩家ID:a9ae5d03-6774-4c9e-94fc-d9b6fdd34bd5, 玩家得分: 4593
玩家ID:0a9609bd-8ed2-4601-b686-27979db0f0f2, 玩家得分: 1137
玩家ID:cf4752a0-5d21-4c42-9c43-0a2a069ab6dd, 玩家得分: 3744
玩家ID:f1f42afa-8a9e-496f-a399-977a1cd0b319, 玩家得分: 3792
玩家ID:3094967b-cf08-4f38-bf5c-fcd5d7f40a9e, 玩家得分: 2333
玩家ID:c8a24d27-6708-450b-ba96-d9ec7fc7c49a, 玩家得分: 2074
玩家ID:bf0312a3-842b-4a72-9e19-33870c760b59, 玩家得分: 4014
玩家ID:b7d07f81-3ef5-48a3-9d30-33be747bb85d, 玩家得分: 637
玩家ID:ef995e80-a0f9-47b6-9422-b7df1ad195e9, 玩家得分: 4130
玩家ID:8ea7fad3-1e72-4d98-bbba-45631d89989f, 玩家得分: 818
玩家ID:9ef8ae4a-9075-4151-a1b2-8193038a9bbc, 玩家得分: 2551
玩家ID:e6d6e1a6-3a25-4341-bcae-4126b1f58d51, 玩家得分: 65
玩家ID:9147c85e-45cf-4046-8f50-7c561ce8dc2d, 玩家得分: 419

       游戏名:奔跑吧,千寻!
       全部玩家排行榜                    
玩家ID:a9ae5d03-6774-4c9e-94fc-d9b6fdd34bd5, 玩家得分:4593
玩家ID:ef995e80-a0f9-47b6-9422-b7df1ad195e9, 玩家得分:4130
玩家ID:bf0312a3-842b-4a72-9e19-33870c760b59, 玩家得分:4014
玩家ID:f1f42afa-8a9e-496f-a399-977a1cd0b319, 玩家得分:3792
玩家ID:1c92c17c-9dfb-41c7-ac3e-5fa9d9faa9a7, 玩家得分:3762
玩家ID:cf4752a0-5d21-4c42-9c43-0a2a069ab6dd, 玩家得分:3744
玩家ID:d28bb38d-9242-419e-a8e9-b3a448f1d9cf, 玩家得分:3178
玩家ID:61207aff-8082-43d0-afbe-43b5c66c9097, 玩家得分:2898
玩家ID:9ef8ae4a-9075-4151-a1b2-8193038a9bbc, 玩家得分:2551
玩家ID:3094967b-cf08-4f38-bf5c-fcd5d7f40a9e, 玩家得分:2333
玩家ID:c8a24d27-6708-450b-ba96-d9ec7fc7c49a, 玩家得分:2074
玩家ID:ca76a887-3ce3-41a2-8e5d-7f6d8fcaebca, 玩家得分:1912
玩家ID:32e297ce-b06b-4dee-8889-664020a63f3a, 玩家得分:1194
玩家ID:a05f1858-6821-4882-816f-f7f6eab7a231, 玩家得分:1158
玩家ID:0a9609bd-8ed2-4601-b686-27979db0f0f2, 玩家得分:1137
玩家ID:8ea7fad3-1e72-4d98-bbba-45631d89989f, 玩家得分:818
玩家ID:b7d07f81-3ef5-48a3-9d30-33be747bb85d, 玩家得分:637
玩家ID:9147c85e-45cf-4046-8f50-7c561ce8dc2d, 玩家得分:419
玩家ID:88ad4cd9-555b-4e38-ab21-a4da280b60d8, 玩家得分:376
玩家ID:e6d6e1a6-3a25-4341-bcae-4126b1f58d51, 玩家得分:65

       游戏名:奔跑吧,千寻!
       Top 玩家
玩家ID:a9ae5d03-6774-4c9e-94fc-d9b6fdd34bd5, 玩家得分:4593
玩家ID:ef995e80-a0f9-47b6-9422-b7df1ad195e9, 玩家得分:4130
玩家ID:bf0312a3-842b-4a72-9e19-33870c760b59, 玩家得分:4014
玩家ID:f1f42afa-8a9e-496f-a399-977a1cd0b319, 玩家得分:3792
玩家ID:1c92c17c-9dfb-41c7-ac3e-5fa9d9faa9a7, 玩家得分:3762

         游戏名:奔跑吧,千寻!
          积分在1000至2000的玩家
玩家ID:0a9609bd-8ed2-4601-b686-27979db0f0f2, 玩家得分:1137
玩家ID:a05f1858-6821-4882-816f-f7f6eab7a231, 玩家得分:1158
玩家ID:32e297ce-b06b-4dee-8889-664020a63f3a, 玩家得分:1194
玩家ID:ca76a887-3ce3-41a2-8e5d-7f6d8fcaebca, 玩家得分:1912



小说《我是全球混乱的源头》
此文章本站原创,地址 https://www.vxzsk.com/1266.html   转载请注明出处!谢谢!

感觉本站内容不错,读后有收获?小额赞助,鼓励网站分享出更好的教程