前言

通常游戏都会有统计装备评分的排行榜。这通常是使用Redis内的zset数据结构实现的。于此,同时还可以使用zremrangeByRank方法剔除超过比如1000的数据,以此来减少redis内的内存消耗。

本文相关代码,可在我的Github项目https://github.com/SeanYanxml/bigdata/tree/master/redis 目录下可以找到。
PS: (如果觉得项目不错,可以给我一个Star。)


Demo

public class RankListDemo {public static void main(String[] args) {JedisPoolManager poolManager = new JedisPoolManager();Jedis jedis = poolManager.getJedis();// rank Listjedis.zadd("MoneyRankList", 1000000, "Jack Ma");// 马云jedis.zadd("MoneyRankList", 800000, "Wang JianLin");//王建林jedis.zadd("MoneyRankList", 900000, "Pony Ma");// 马化腾jedis.zadd("MoneyRankList", 700000, "Liu Qiangdong");//刘强东jedis.zadd("MoneyRankList", 600000, "Li Jiacheng");// 李嘉诚// 获取排行榜前三名System.out.println("Demo: Get Top 3:");Set<String> top3MoneySet = jedis.zrevrange("MoneyRankList", 1, 3);// 财富榜前三名int index = 0 ; for(String name : top3MoneySet){System.out.print(" || index: "+ ++index +" name: "+name + " money: "+ jedis.zscore("MoneyRankList", name));}// 获取某个成员的排名&scoreSystem.out.println("\nDemo: Get One of the member:");System.out.println(" || index: "+ jedis.zrank("MoneyRankList", "Wang JianLin") +" name: "+"Wang JianLin" + " money: "+ jedis.zscore("MoneyRankList", "Wang JianLin"));// 每次保留 Top 3 超过Top3的全部删除// 可以使用定时器 定时删除 或者加入后删除
//       zremrangebyrank(key, min, max):删除名称为key的zset中rank >= min且rank <= max的所有元素
//       zremrangebyscore(key, min, max) :删除名称为key的zset中score >= min且score <= max的所有元素// 可以定期
//      jedis.zremrangeByRank("MoneyRankList", 3, 100000000);jedis.zremrangeByRank("MoneyRankList", 3, -1);// 获取所有的排行榜System.out.println("\nDemo: All members:");Set<String> moneySet = jedis.zrevrange("MoneyRankList", 0, -1);// 财富榜前三名index = 0 ; for(String name : moneySet){System.out.print(" || index: "+ ++index +" name: "+name + " money: "+ jedis.zscore("MoneyRankList", name));}}}

Reference

[1]. Redis: 使用Sorted Set 解决游戏中有关排行问题
[2]. redis 的sorted set做排行榜,怎么移除被挤到一定名次之后的数据项?

Redis Demo系列之(四)排行榜相关推荐

  1. Redis系列(四)--内存淘汰机制(含单机版内存优化建议)

    每台redis的服务器的内存都是有限的,而且也不是所有的内存都用来存储信息.而且redis的实现并没有在内存这块做太多的优化,所以实现者为了防止内存过于饱和,采取了一些措施来管控内存. 文章结构: ( ...

  2. Redis系列(十四)、Redis6新特性之RESP3与客户端缓存(Client side caching)

    Redis6引入新的RESP3协议,并以此为基础加入了客户端缓存的新特性,在此特性下,大大提高了应用程序的响应速度,并降低了数据库的压力,本篇就带大家来看一下Redis6的新特性:客户端缓存. 目录 ...

  3. 【拉普拉斯机制代码实现demo】差分隐私代码实现系列(四)

    差分隐私代码实现系列(四) 写在前面的话 回顾 差分隐私(Differential Privacy) 拉普拉斯机制(The Laplace Mechanism) 多少噪音就足够了?(How Much ...

  4. docker 打包镜像_Spring Boot2 系列教程(四十一)部署 Spring Boot 到远程 Docker 容器

    不知道各位小伙伴在生产环境都是怎么部署 Spring Boot 的,打成 jar 直接一键运行?打成 war 扔到 Tomcat 容器中运行?不过据松哥了解,容器化部署应该是目前的主流方案. 不同于传 ...

  5. python操作redis set_Python操作redis学习系列之(集合)set,redis set详解 (六)

    #-*- coding: utf-8 -*- importredis r= redis.Redis(host="126.56.74.190",port=639,password=& ...

  6. apache在线升级yum_基于Redis实现在线游戏积分排行榜 - phyger

    介绍 本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能. 背景知识 Redis Redis是一个开源的使用ANSI C语言编写.遵守BSD协议.支持网络.可基于内存亦可持久化 ...

  7. Maven系列(四):Maven内置属性,pom属性

    Maven系列(四): 今天博主将为大家分享一下Maven系列(四):Maven内置属性,pom属性,不喜勿喷,如有异议欢迎讨论! 以下所写内容均与以前的文章有联系可以前往博文查看,陈永佳的博客 内置 ...

  8. 基于Redis实现在线游戏积分排行榜

    介绍 本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能. 背景知识 Redis Redis是一个开源的使用ANSI C语言编写.遵守BSD协议.支持网络.可基于内存亦可持久化 ...

  9. 基于Redis实现在线游戏积分排行榜!体验一下云服务器!

    基于Redis实现在线游戏积分排行榜 体验地址:https://developer.aliyun.com/adc/scenario/44d54481170f4914996d3ae53b818f32?s ...

最新文章

  1. JGG :微生物所王军-综述固有免疫细胞在胃肠道疾病中研究进展
  2. 编程爱好者学vb还是python-Python语言为什么被称为高级程序设计语言?
  3. 0xFFFFFF的问题
  4. 基于JAX-WS的webService开发实例
  5. 如何在Mac计算机上轻松查找和删除类似照片
  6. iOS开发之--改变系统导航的颜色,字体,还有返回样式的自定义
  7. 怎么用eclipse编写python_python用eclipse开发配置
  8. 升级Exchange server 2010 SP1至SP3版本相关问题解决方法
  9. 【已解决】报异常:java.lang.ArithmeticException: / by zero
  10. Android Studio单元测试入门
  11. java雪花纷飞_终于理解白雪比喻句
  12. 最齐全的装饰贴图素材,速来收藏
  13. 使用python批量创建文件夹or文件
  14. Material Design ui设计风格详解
  15. Windows找不到文件‘Chrome‘。请确定文件名是否正确后,再试一次
  16. 患病职工解除劳动关系可以吗
  17. PCB各种表面工艺差异说明
  18. python主题更改_jupyter notebook更换皮肤主题的实现
  19. 计算机培训研修心语,学子榜样 | 2018级国家励志奖学金程春旭:不忘初心,砥砺前行...
  20. 什么是IEEE、EI、SCI?

热门文章

  1. 年轻By塞缪尔·厄尔曼
  2. 【编程100%】22-05 字符串之分割字符串
  3. 5款软件做访谈 | 语音转文字 | 实时转录 | 简单高效
  4. 马鞍山市“四化”打造智慧交通引领智慧城市建设
  5. cad解除块的快捷命令_Auto CAD2012块打散快捷键是什么啊??
  6. C++:团体程序设计天梯赛(出租)
  7. 集团信息化之路 电子采购系统的物料采购计划模块沟通会议
  8. Unity分格式血条
  9. 冠捷拟收购飞利浦电视业务 双方已签订意向书
  10. Visual Studio 2015试用期过期,密钥激活