文章目录
  1. 1. 纯 Redis 集群
  2. 2. MySQL 做持久化,Redis 做 Cache
    1. 2.1. 与纯redis集群相比的劣势
    2. 2.2. 优势
  3. 3. Redis 做 Cache + 热数据持久化,MySQL 做冷数据持久化
  4. 4. 参考

纯 Redis 集群

如果 Redis 不止做 Cache,也做持久化,那就得好好算算我们的业务规模需要多少台机器来支撑。1000w 注册玩家,每台机器 16G 内存(为了保证效率取 3/4 为可用,即 12G)。

如果每个玩家 1M 数据,总约 9765G,不算热备,需要 814 台机器。每台机器存储 1.2w 人。

如果每个玩家 16k 数据,总约 153G,不算热备,需要 13 台机器。每台机器存储 77w 人。

如果每个玩家 1k 数据总约 9.5G,不算热备,需要 1 台机器。每台机器存储 1000w 人。

注册玩家会越来越多的……

MySQL 做持久化,Redis 做 Cache

只说存储,一个 MySQL 支持几 T 数据没什么问题。例如上边 1000w 注册玩家,每个玩家 1M 数据,总数据近 9.5T,存一个 MySQL 足够。但是如果高峰在线玩家并发到 100w,需要将大部分操作规划到 Redis 这个 Cache上。否则 MySQL 仍然因磁盘 IO 太多吃不消。

与纯redis集群相比的劣势

  • 好友需要看离线玩家的信息,而离线玩家在 MySQL 里,如果频繁? 把离线玩家可能被别人查看的信息不存 MySQL 了,改用 Redis 做持久化。
  • GM 工具改玩家消息,需要改 MySQL 和 Redis 的 Cache 里。会不会容易出问题?

优势

  • Redis 只做 Cache 集群了,用 Twemproxy 管理就行了。如果 Redis 做持久化,还是需要自己来分片,且早期就要规划好。
  • 单个玩家的数据涨到 1M 的时候,总用户涨到 2000w~3000w,再加两个 MySQL。

Redis 做 Cache + 热数据持久化,MySQL 做冷数据持久化

这里其实就是将二里边的每个玩家的部分很热的数据从 MySQL 移到 Redis 里做持久化。但是玩家在线时,他的数据基本都算是热的。所以这个方案不是很好设计。

参考

  • Redis 官方关于分片的文章:http://redis.io/topics/partitioning
  • Twemproxy文章:http://antirez.com/news/44
文章目录
  1. 1. 纯 Redis 集群
  2. 2. MySQL 做持久化,Redis 做 Cache
    1. 2.1. 与纯redis集群相比的劣势
    2. 2.2. 优势
  3. 3. Redis 做 Cache + 热数据持久化,MySQL 做冷数据持久化
  4. 4. 参考