利用redis实现排行榜功能

182 阅读1分钟

1、核心思想

1.1 为什么使用redis,而不是数据库?

主要原因:数据量大,查询起来速度慢,实时性弱,还可能面临,数据分散,需要各方面汇总.

1.2 redis的zset

1.zset的常用方法 ZADD key score1 member1 [score2 member2]
向有序集合添加一个或多个成员,或者更新已存在成员的分数.如果是更新则会返回0

2.ZCOUNT key min max
计算在有序集合中指定区间分数的成员数

3.ZINCRBY key increment member
有序集合中对指定成员的分数加上增量 increment

4.ZRANGE key start stop [WITHSCORES]
通过索引区间返回有序集合指定区间内的成员

5.ZREM key member [member ...]
移除有序集合中的一个或多个成员

更多 Redis 有序集合(sorted set) | 菜鸟教程 (runoob.com)

2.如何解决排序中多维度的问题

多个维度的排序问题在redis中的解决方案

Redis 的分数类型采用的是 double,64 位双精度浮点数只有 52 位有效数字,它能精确表达的整数范围为 - 2^53 到 2^53,如果 Redis 的分数类型为 int64,我们就没有上面的烦恼。

如何解决上面的问题呢?

第一维度,第二维度,第N维度分段存储在64个bit位置上.