少年阿賓

          那些青春的歲月

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            500 Posts :: 0 Stories :: 135 Comments :: 0 Trackbacks
          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一樣預先設計好拆分方案。

          posted on 2012-08-03 13:06 abin 閱讀(5419) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 四川省| 抚远县| 项城市| 永顺县| 石渠县| 岳普湖县| 施甸县| 泾源县| 张北县| 承德市| 永清县| 龙井市| 嵊州市| 绩溪县| 苏尼特右旗| 平山县| 旬邑县| 双峰县| 吉安县| 宝清县| 武清区| 蓬溪县| 缙云县| 永平县| 岳西县| 天柱县| 泰顺县| 来宾市| 土默特右旗| 内黄县| 青河县| 申扎县| 南开区| 云霄县| 怀集县| 沈阳市| 睢宁县| 聊城市| 重庆市| 叙永县| 普定县|