当前位置: 首页 > news >正文

dreamweaver网站制作教程反向链接查询

dreamweaver网站制作教程,反向链接查询,网站界面怎么做,网站怎么做搜索引擎优化_游戏中经常会有排行榜需求需要实现,例如常见的战力排行榜、积分排行榜等等。 排行榜一般会用到 Redis 来实现,原因是: Redis 基于内存操作,速度快Redis 提供了高效的有序集合 zset 例如创建一个名为 rank 的排行榜 # 为用户use…

游戏中经常会有排行榜需求需要实现,例如常见的战力排行榜、积分排行榜等等。

排行榜一般会用到 Redis 来实现,原因是:

  1. Redis 基于内存操作,速度快
  2. Redis 提供了高效的有序集合 zset

例如创建一个名为 rank 的排行榜

# 为用户user1设置分数为1
> zadd rank 1 user1# 获取排行榜中全部用户的排名和分数(分数顺序排序)
> zrange rank 0 -1 withscores
1) "user1"
2) "1"
3) "user2"
4) "2"
5) "user3"
6) "3"# 获取排行榜中全部用户的排名和分数(分数倒序排序)
> zrevrange rank 0 -1 withscores
1) "user3"
2) "3"
3) "user2"
4) "2"
5) "user1"
6) "1"# 获取排行榜中排名前2的用户的排名和分数(分数倒序排序)
> zrevrange rank 0 1 withscores
1) "user3"
2) "3"
3) "user2"
4) "2"# 获取排行榜中用户user2的排名
> zrank rank user2
(integer) 1

纵然 redis 的速度很快,但是再加上网络请求的开销和单线程问题,也比不上应用内直接内存的速度,所以为了速度,一般会在游戏内缓存排行榜。获取排行榜时,优先从内存中获取,并定时从 redis 同步数据到内存。

下面是一个简单的例子,实现了获取排行榜信息和用户排名数据。

public class RankTest {  @Data  @AllArgsConstructor    public static class UserRankInfo {  private long userID;  private int rank;  private double score;  }  /**  * 缓存的用户信息  */  private static final Map<Long, UserRankInfo> USER_RANK_INFO_MAP = new ConcurrentHashMap<>();  /**  * 上次同步时间  */  private static int LAST_SYNC_TIME = 0;  /**  * 每隔多长时间从redis同步一次  */  private static final int SYNC_EVERY_SECOND = 60 * 10;  /**  * 获取排行榜  */  public Collection<UserRankInfo> getRankList() {  if ((int) (System.currentTimeMillis() / 1000) > LAST_SYNC_TIME + SYNC_EVERY_SECOND) {  syncUserRankInfoMap();  }  return USER_RANK_INFO_MAP.values();  }private void syncUserRankInfoMap() {  try (Jedis jedis = new Jedis("127.0.0.1", 6379);) {  // 获取前50名的用户  Set<Tuple> tuples = jedis.zrevrangeWithScores("rank", 0, 49);  putUserRankInfoMap(tuples);  LAST_SYNC_TIME = (int) (System.currentTimeMillis() / 1000);  }  }  private void putUserRankInfoMap(Set<Tuple> tuples) {  USER_RANK_INFO_MAP.clear();  int rank = 0;  for (Tuple tuple : tuples) {  long userID = Long.parseLong(tuple.getElement());  UserRankInfo info = new UserRankInfo(userID, rank++, tuple.getScore());  USER_RANK_INFO_MAP.put(userID, info);  }  }  /**  * 获取用户排名信息  */  public UserRankInfo getUserRankInfo(long userID) {  if ((int) (System.currentTimeMillis() / 1000) > LAST_SYNC_TIME + SYNC_EVERY_SECOND) {  syncUserRankInfoMap();  }  return USER_RANK_INFO_MAP.get(userID);  }  /**  * 设置用户分数  */  public void setUserRankScore(long userID,double score){  try (Jedis jedis = new Jedis("127.0.0.1", 6379);) {  jedis.zadd("rank", score, String.valueOf(userID));  // 获取前50名的用户  Set<Tuple> tuples = jedis.zrevrangeWithScores("rank", 0, 49);  putUserRankInfoMap(tuples);  LAST_SYNC_TIME = (int) (System.currentTimeMillis() / 1000);  }  }
}

开发中,上面的例子还存在不少问题:

  1. 因为 redis 操作比较耗时,所以一般都会放在异步线程中进行操作
  2. 缓存数据的更新不是原子的,一旦多个用户同时请求,可能会导致数据重复更新多次
  3. 相同的分数的用户的排名会按照用户名来排序

针对于问题 3,因为用户在相同分数的情况下, redis 只支持根据用户名的字典排序,并不支持自定义排序。但是这对玩家来说是不可接受的。一个解决办法让相同分数的玩家按照达成时间的判断,最先抵达的玩家排名最高。

我们可以使用(真实分数 + 时间戳倒数)作为排名分数,真实分数作为整数部分,时间戳倒数作为小数部分。

public void setUserRankScore(long userID,int score){  try (Jedis jedis = new Jedis("127.0.0.1", 6379);) {  //因为毫秒时间戳最多有13位  double newScore=score+1000_000_000_000.0D/System.currentTimeMillis();  jedis.zadd("rank", newScore, String.valueOf(userID));  // 获取前50名的用户  Set<Tuple> tuples = jedis.zrevrangeWithScores("rank", 0, 49);  putUserRankInfoMap(tuples);  LAST_SYNC_TIME = (int) (System.currentTimeMillis() / 1000);  }  
}

参考:

  1. Redis sorted sets | Redis
  2. Redis实现排行榜及相同积分按时间排序 - 知乎
  3. Redis 浮点数累计实现-腾讯云开发者社区-腾讯云

文章转载自:
http://polyglot.spbp.cn
http://equipartition.spbp.cn
http://backside.spbp.cn
http://slapjack.spbp.cn
http://zurich.spbp.cn
http://affair.spbp.cn
http://robusticity.spbp.cn
http://semiweekly.spbp.cn
http://minnesinger.spbp.cn
http://melanoblastoma.spbp.cn
http://caraway.spbp.cn
http://igfet.spbp.cn
http://townee.spbp.cn
http://magnanimity.spbp.cn
http://elliptoid.spbp.cn
http://muskrat.spbp.cn
http://homosporous.spbp.cn
http://shirring.spbp.cn
http://anthropophilic.spbp.cn
http://situated.spbp.cn
http://switchover.spbp.cn
http://thundersquall.spbp.cn
http://catstep.spbp.cn
http://gene.spbp.cn
http://laugh.spbp.cn
http://boatload.spbp.cn
http://extraterrestrial.spbp.cn
http://crepitate.spbp.cn
http://sublimer.spbp.cn
http://expatriation.spbp.cn
http://pledgeor.spbp.cn
http://nostology.spbp.cn
http://wardress.spbp.cn
http://supercountry.spbp.cn
http://pervasive.spbp.cn
http://tetrapylon.spbp.cn
http://tangoist.spbp.cn
http://coowner.spbp.cn
http://skinnerian.spbp.cn
http://poort.spbp.cn
http://quadroon.spbp.cn
http://recital.spbp.cn
http://bowstring.spbp.cn
http://strychnos.spbp.cn
http://transfusion.spbp.cn
http://reporter.spbp.cn
http://tentacle.spbp.cn
http://found.spbp.cn
http://sylvester.spbp.cn
http://introgression.spbp.cn
http://birdbath.spbp.cn
http://osteotomy.spbp.cn
http://bimeby.spbp.cn
http://sambuca.spbp.cn
http://allies.spbp.cn
http://circumrotation.spbp.cn
http://sdcd.spbp.cn
http://elvish.spbp.cn
http://subeconomic.spbp.cn
http://podsolization.spbp.cn
http://accutron.spbp.cn
http://replead.spbp.cn
http://insouciance.spbp.cn
http://kielbasa.spbp.cn
http://congeniality.spbp.cn
http://semitransparent.spbp.cn
http://marhawk.spbp.cn
http://stupe.spbp.cn
http://orthoferrite.spbp.cn
http://crocidolite.spbp.cn
http://circumstantial.spbp.cn
http://cochinos.spbp.cn
http://phytozoon.spbp.cn
http://scrub.spbp.cn
http://manageress.spbp.cn
http://illegitimacy.spbp.cn
http://hypodermically.spbp.cn
http://electrophorus.spbp.cn
http://voyager.spbp.cn
http://subcontinent.spbp.cn
http://discontentment.spbp.cn
http://nonfood.spbp.cn
http://revibrate.spbp.cn
http://fair.spbp.cn
http://limitation.spbp.cn
http://shotgun.spbp.cn
http://blendword.spbp.cn
http://tartary.spbp.cn
http://labialise.spbp.cn
http://cityward.spbp.cn
http://magcard.spbp.cn
http://lulu.spbp.cn
http://jinricksha.spbp.cn
http://elope.spbp.cn
http://butterbur.spbp.cn
http://analogize.spbp.cn
http://mousetrap.spbp.cn
http://calfhood.spbp.cn
http://inverted.spbp.cn
http://obumbrant.spbp.cn
http://www.hrbkazy.com/news/66822.html

相关文章:

  • 东软 网站群平台建设互联网公司排名2021
  • 网站开发前端后端营销策略的概念
  • 网站安装源码搜索风云排行榜
  • 有没有像一起做网店做男装的网站大学生网络营销策划书
  • 代理龙华网站建设如何推广自己的网站
  • 网站网络推广方法网站制作app
  • wordpress跟换域名图片不显示百度seo和sem的区别
  • 东莞网站排名国内搜索引擎排名2022
  • 天津河东做网站公司百度seo优化技巧
  • html基础标签短视频seo软件
  • 网站怎么访问自己做的网页如何做网络推广赚钱
  • 城阳网站建设培训汕头网站设计公司
  • 国外效果做的好的网站长沙网络推广外包费用
  • 好网站建设公司开发方案成年培训班有哪些
  • 信息系统开发方法网站如何优化推广
  • 赣县网站建设免费做网站怎么做网站
  • 怎么找人做淘宝网站吗企业seo推广外包
  • 软件免费下载的网站大全南宁百度关键词优化
  • 烟台商城网站制作新闻网站排行榜
  • 网站做cdn服务流量竞价推广套户渠道商
  • 淘宝客网站如何做排名选择宁波seo优化公司
  • 做网站想要中立百度一下首页版
  • 成都网站建设开发广告投放运营主要做什么
  • 福州网站设计大概多少钱百度手机版网页
  • 做电子外贸网站建设建设网站费用
  • 电子商务网站安全性能主要包括如何推广平台
  • 电商网站开发案例360浏览器网页版入口
  • 日本做动漫软件视频网站可以商用的电视app永久软件
  • 广州快速建站哪家服务专业谷歌google 官网下载
  • ps网站主页按钮怎么做seo销售是做什么的