玩家按照,等级,战力,金钱,武器,公会这几个属性排名,并且显示出玩家的排名下降和上升,不同的属性有不同的名次,每天刷新一次名次。只需要显示100名。
我的想法是数据库中建一张表,字段,id ,玩家id,属性的类型,当天排名,属性的当天的值,修改的时间。
     另外就是每个属性建立两张缓存表,都是直放入100个数据,例如等级表,第一张表1存储玩家的id,属性值。另一张表2是玩家id,属性值,玩家的排名,玩家排名上升下降。
    我的想法应为一天刷新一次,当到了刷新的时间,我就从数据库中将当前属性(例如等级)读出来放到缓存表2中,当玩家查询此属性排名的时候,就直接从表2中获取,就不用到数据库中去查询,大大降低了对于数据库的访问次数。
   对于表1,我就当玩家当前属性发生改变的时候就放到表1中,如果表1中没有此玩家的id,就插入到表1中,如果此时表中有100个,则将属性值最小的一个剔除。现在纠结的是,玩家的人数很多,属性的值变化很多,对于表1的操作也非常频繁,非常消耗资源。还有如果服务器down机或者维护,就需要实时刷新数据库,保证数据库中的数据最新。表1的排名随时变化,就需要随时更新数据库,这样导致数据库的很大的访问量,消耗大量资源。
   现在我只想到这种方法,各位有木有新的解决方案或者对于我的想法的修改方案,请大家赐教啊,小弟才接触,新人。