Redis容量及使用规划

日期: 2011-01-05 作者:TimYang 来源:TechTarget中国 英文

  在使用Redis过程中,我们发现了不少Redis不同于Memcached,也不同于MySQL的特征。

  (本文主要讨论Redis未启用VM支持情况)

  1. Schema

  MySQL: 需事先设计

  Memcached: 无需设计

  Redis: 小型系统可以不用,但是如果要合理的规划及使用Redis,需要事先进行类似如下一些规划

  •   数据项: value保存的内容是什么,如用户资料
  •   Redis数据类型: 如String, List
  •   数据大小: 如100字节
  •   记录数: 如100万条(决定是否需要拆分)
  •   ⋯⋯

  上面的规划就是一种schema,为什么Redis在大型项目需要事先设计schema?因为Redis服务器有容量限制,数据容量不能超出物理内存大小,同时考虑到业务数据的可扩充性,记录数会持续增多、单条记录的内容也都会增长,因此需要提前规划好容量,数据架构师就是通过schema来判断当前业务的Redis是否需要“分库分表”以满足可扩展需求。

  2. 容量及带宽规划

  容量规划

  MySQL: < 硬盘大小

  Memcached: < RAM

  Redis: < RAM

  带宽规划

  由于Redis比MySQL快10倍以上,因此带宽也是需要事先规划,避免带宽跑满而出现瓶颈。

  3. 性能规划(QPS)

  当系统读写出现瓶颈,通常如何解决?

  MySQL

  写: 拆分到多服务器

  读: (1) 拆分 (2) 写少也可以通过增加Slave来解决

  Memcached

  读写: 都通过hash拆分到更多节点。

  Redis:

  写:拆分

  读: (1) 拆分 (2) 写少也可以通过增加Slave来解决

  4. 可扩展性

  MySQL: 分库分表

  Memcached: hash分布

  Redis:也可以分库,也可以hash分布

  小结

  通过以上分析,Redis在很多方面同时具备MySQL及Memcached使用特征,在某些方面则更像MySQL。

  由于Redis数据不能超过内存大小,一方面需要进行事先容量规划,保证容量足够;另外一方面设计上需要防止数据规模无限制增加,进而导致Redis不可扩展。

  Redis需要象MySQL一样预先设计好拆分方案。

  小问题

  在MySQL中,通过预先建立多表或者库可以在业务增长时候将这些表或库一分为二部署到更多服务器上。

  在Redis中,“分库分表”应当如何实现?有什么好的设计模式?

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

作者

TimYang
TimYang

相关推荐