如何设计一个排行榜?
MySQL的ORDER BY 关键字
小数据量可以使用,数据量稍微大点,可以加索引并且限制排序数据量达到优化的效果。
100w数据量全部排序大致需要4s,用优化加索引和限制排序量可以达到0.01s。
Redis的Sorted Set
大数据量一般都用这个。
Sorted Set数据结果和Set的差别就是增加了权重参数score,使得集合元素可以按score进行排序。
常用命令:
ZRANGE key start end (从小到大排序)
ZREVRANGE key start end (从大到小排序)
ZREVRANK key member (获取元素排名,从大到小)
ZCARD key (获取指定集合的元素数量)
ZSCORE key member (获取指定集合中指定元素的score)
ZADD key score1 member1 score2 member2…(向集合中添加元素)
ZINTERSTORE destination numkeys key1 key2 … (将给定集合的交集存储在destination中,对相同元素对应的score值进行SUM聚合操作,numkeys作为集合数量)
ZUNIONSTORE destination numkeys key1 key2 … (求并集)
ZDIFF destination numkeys key1 key2 … (求差集)