redis实现排行榜功能

1.Jedis的介绍

        Jedis = Java + Redis

        Redis不仅可以使用命令来操作,现在基本上主流的语言都有API支持,比如Java、C#、C++、PHP、Node.js、Go等。在官方网站里列一些Java的客户端,有Jedis、Redisson、Jredis、JDBC-Redis等其中官方推荐使用Jedis和Redisson。

import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.UUID;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.Tuple;

/**
 * Jedis实现排行榜
 * 实现王者荣耀手游按照积分排名
 * 
 */
public class Jedis_RankingList {
	static int TOTAL_SIZE = 30;   //玩家总人数

	public static void main(String[] args) {
		//创建Jedis实例
		Jedis jedis = new Jedis("127.0.0.1",6379);
		System.out.println("Redis连接成功");
		
		try {
			String key = "欢迎来到王者荣耀";
			//清除可能已有的键
			jedis.del(key);
			
			//模拟生成多个游戏玩家
			List<String> players = new ArrayList<String>();
			for(int i=0;i<TOTAL_SIZE;++i) {
				//随机生成每个玩家的ID
				players.add(UUID.randomUUID().toString());
			}
			System.out.println("-----玩家登陆进入游戏-----");
			//开始记录每个玩家的得分
			for(int j=0;j<players.size();j++) {
				//模拟生成游戏玩家的得分
				int score = (int)(Math.random()*10000);
				String member = players.get(j);
				//打印玩家的游戏得分信息
				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()));
            }
            
            //打印出排名前五的游戏玩家
            System.out.println();
            System.out.println("-----------"+key+"--------------");
            System.out.println("--------王者荣耀排名前五玩家-----------");
            scoreList = jedis.zrevrangeWithScores(key, 0, 4);
            for(Tuple item : scoreList) {
            	System.out.println("玩家ID: " + item.getElement() + ", 玩家得分: " + Double.valueOf(item.getScore()));
            }
            
            //打印出得分在5000到8000之间的玩家信息
            System.out.println();
            System.out.println("-----------"+key+"------------");
            System.out.println("--------王者荣耀得分在5000至8000的玩家-----------");
            scoreList = jedis.zrangeByScoreWithScores(key, 5000, 8000);
            for(Tuple item : scoreList) {
            	System.out.println("玩家ID: " + item.getElement() + ", 玩家得分: " + Double.valueOf(item.getScore()));
            }
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			jedis.quit();
			jedis.close();
		}
	}
	

}

相关推荐

  1. redis实现排行榜功能

    2023-12-07 11:30:02       43 阅读
  2. SpringBoot+Redission实现排行榜功能

    2023-12-07 11:30:02       16 阅读
  3. 使用Redis实现游戏排行榜

    2023-12-07 11:30:02       13 阅读
  4. php,redis实现一个电影热度排行榜

    2023-12-07 11:30:02       37 阅读
  5. 利用Spring Boot与Redisson实时排行榜功能

    2023-12-07 11:30:02       14 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-07 11:30:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-07 11:30:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-07 11:30:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-07 11:30:02       18 阅读

热门阅读

  1. docker安装sybase数据库

    2023-12-07 11:30:02       35 阅读
  2. Mysql大数据量删除

    2023-12-07 11:30:02       30 阅读
  3. 【前端】windows下nvm安装node、npm的一些坑

    2023-12-07 11:30:02       44 阅读
  4. Ubuntu18.04的VSCode输入不了中文

    2023-12-07 11:30:02       42 阅读
  5. Spring MVC详解

    2023-12-07 11:30:02       27 阅读
  6. MFC中updatedata(False)和Updatedata(TRUE)区别

    2023-12-07 11:30:02       32 阅读
  7. Redis小知识

    2023-12-07 11:30:02       34 阅读
  8. 【力扣100】 3.最长连续序列

    2023-12-07 11:30:02       44 阅读
  9. leetcode每日一题4

    2023-12-07 11:30:02       35 阅读
  10. 向量数据库,展望AGI时代

    2023-12-07 11:30:02       32 阅读