基于Redis 千万级用户排行榜最佳实践
前言
Redis 是一个开源的,内存中的数据结构存储系统,可以用作数据库、缓存和消息队列中间件。它支持多种类型的数据结构,如 字符串(string), Hash, 列表(List), 集合(Set), 有序集合(Sorted Set) 。 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(Transactions) 和不同级别的 磁盘持久化(Persistence), 并通过 Redis哨兵(Sentinel)和自动分区(Cluster)提供高可用性
根据Redis支持的几大数据结构, 我们可以在多个场景加以应用, 目前应用最广泛的场景主要用于以下几大类:
基于Web服务的分布式会话Session存储
消息队列
排行榜
计数器
发布/订阅
此文主要讲解个人是如何处理千万级别用户排行榜并持久化用户排行榜用户数据
排行榜种类
由于排行榜的不同业务需求, 需要从不同角度去考虑排行榜的榜单生成规则. 目前我们主要研究实时榜和历史榜单
排行榜Redis数据结构选择
在这里, 我们采用Redis Sorted Set数据结构来处理排行榜数据, 根据官方文档定义:
Redis Sorted sets —
Sorted sets are a data type which is similar to a mix between a Set and a Hash. Like sets, sorted sets are composed of unique, non-repeating string elements, so in some sense a sorted set