请教大佬,类似蚂蚁森林的能量排行,后端应该怎么设计?
假设系统有 N 万个用户,每个用户都有一个 score 。这个 score 经常发生变化。
需要完成以下功能:
- 整个平台,score 最高的 N 个用户的信息
- 我的好友 score 排行榜
- 我的 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) );