请教大佬,类似蚂蚁森林的能量排行,后端应该怎么设计?

qwerthhusn:假设系统有 N 万个用户,每个用户都有一个 score 。这个 score 经常发生变化。

需要完成以下功能:

  1. 整个平台,score 最高的 N 个用户的信息
  2. 我的好友 score 排行榜
  3. 我的 score 在整个平台处于的位置

现在没有太好的思路,现在想的是

  • score 加索引,但是对于经常变化的这个列加索引会不会导致更新速度大幅减慢?
  • redis 加个 zset,但是这样的话如何能保证跟 MySQL 里面的数据保持一致呢?

假设数据存在 MySQL 里面的

create table user (
    id bigint not null primary key,
    name varchar(255) not null,
    score int not null
);

create table user_relation (
   user1_id bigint not null,
   user2_id bigint not null,
   primary key(user1_id, user2_id)
);

siweipancc:mysql 可以用内存数据库,等个最优解

qwerthhusn:@siweipancc 这东西要持久化的,内存数据库肯定不行

siweipancc:@qwerthhusn 可以晚点同步。我指的是开另一个内存中间表,在一个活动结算周期切换的时候再写入实体表

作为城市里生活的高智个体,我们需要智慧城市解决哪些生活问题?

trueGate:最近被“困在系统里的外卖小哥”文章刷屏,从中感受作者在替外卖从业者抒发一种被程序支配而不得不脱离现实的愤慨。作为旁观者,尚可以像看待“楚门的世界”一样,表达一些同情即可;但转念一想,城市在建的“智慧城市”系统,会不会将每一个人困住。__________________________脑洞分割线________________________…

大佬们判断对象为 null 是怎么判断的呢?

fordawn:直接使用 != null 还是用 Objects.nonNull 呢 感觉好像用 Objects 更加对象化 大佬们一般杂用呢xuanbg:!= null 不挺好的吗 x66128:在床上看一眼就能判断了 optional:Objects.isNullO nonNull requireNonNull optional:现在好久不用 ==nul…

怎么修复电脑版微信聊天记录

wzehai:我的微信数据文件目录是 C:\Users\zehai\OneDrive\文档\WeChat Files\,平时一直通过 OneDrive 同步,这几天我重装了一下系统,这次重装系统安装完微信程序后,打开微信程序通常都需要从数据文件目录下载需要的文件来启动微信,但这次下载了一半我就给取消下载了,然后微信出了个报错提示,再然后我又重新下载数据文件后…

请问有没有什么开源的成就系统?

linvaux:事情是酱紫的 为了激励我们公司的测试小伙伴多学习写代码,我想搞一个成就系统,根据每个人在 gitlab 的代码量和代码质量,来颁发不同的成就奖章。 所以想请教下各位大佬,有没有现成的成就系统,最好是能接入 gitlab 的。 因为我发现 apple watch 的运动成就那一套挺好玩的,会激励我多运动,来获得各种各样的奖章,所以才萌生了这样的…

想请教下任务系统的数据库表该怎么设计?

Pandorapx:最近公司要做一个积分任务系统,做任务获取积分。 但是在表如何设计这块找不到相似的例子,百度上也搜不到,所以想来问下各位 v 友,希望能提供下思路 任务分为新人任务,每日任务,永久任务等,每日任务又有限制次数,比如每天只能收藏 5 次,签到 5 次等 现在我的想法是设计一个 任务表,一个 用户-任务关联表 但是用户每次进任务中心页面是需要查…