由于考虑到实时数据库每次都全表查询再加上聚合字段所以改为冗余字段 也就是打破三范式
但是又考虑到我们的实时更新计算排名太麻烦
交给redis的zset有序集合进行实时的自动排序 只需要每次更新积分的时候对redis中的数据进行一个同步的增量更新就可以了
然后考虑到一直存在redis因为数据太多也不是个事
所以再定时更新到mysql中
redis可以绑定key
// 1-redis绑定key,避免每次查询都需要给key(优化实现方案之一,用原来每次给key的也可以)
BoundZSetOperations ops = stringRedisTemplate.boundZSetOps(key);
分页参数的计算:起始脚标是0,因此end需要-1
排名rank的计算,容易分页的信息漏掉:from + 1
// 起始脚标是0,因此end需要-1:如查询第一页:from=0,pageSize=10,而0-10查出来11个数据,因此-1