一、問題: 資料庫表數據量極大(千萬條),要求讓伺服器更加快速地響應用戶的需求。 資料庫表數據量極大(千萬條),要求讓伺服器更加快速地響應用戶的需求。 二、解決方案: 1.通過高速伺服器Cache緩存資料庫數據 2.記憶體資料庫 (這裡僅從數據緩存方面考慮,當然,後期可以採用Hadoop+HBase+ ...
一、問題: 資料庫表數據量極大(千萬條),要求讓伺服器更加快速地響應用戶的需求。 二、解決方案: 1.通過高速伺服器Cache緩存資料庫數據 2.記憶體資料庫 (這裡僅從數據緩存方面考慮,當然,後期可以採用Hadoop+HBase+Hive等分散式存儲分析平臺) 三、主流解Cache和資料庫對比:


2.如果請求的數據在緩存中找不到,這時候再去查詢資料庫。返回請求數據的同時,把數據存儲到緩存中一份。
3.保持緩存的“新鮮性”,每當數據發生變化的時候(比如,數據有被修改,或被刪除的情況下),要同步的更新緩存信息,確保用戶不會在緩存取到舊的數據。
Memcached作為高速運行的分散式緩存伺服器,具有以下的特點:
-
- 協議簡單
- 基於libevent的事件處理
- 內置記憶體存儲方式
- memcached不互相通信的分散式
Memcached的分散式不是在伺服器端實現的,而是在客戶端應用中實現的,即通過內置演算法制定目標數據的節點,如下圖所示:

-
- 多樣的數據模型
- 持久化
- 主從同步
4.6 Redis如何實現分散式可拓展性? 2.8以前的版本:與Memcached一致,可以在客戶端實現,也可以使用代理,twitter已開發出用於Redis和Memcached的代理Twemproxy 。 3.0 以後的版本:相較於Memcached只能採用客戶端實現分散式存儲,Redis則在伺服器端構建分散式存儲。Redis Cluster是一個實現了分散式且允許單點故障的Redis高級版本,它沒有中心節點,各個節點地位一致,具有線性可伸縮的功能。如圖給出Redis Cluster的分散式存儲架構,其中節點與節點之間通過二進位協議進行通信,節點與客戶端之間通過ascii協議進行通信。在數據的放置策略上,Redis Cluster將整個 key的數值域分成16384個哈希槽,每個節點上可以存儲一個或多個哈希槽,也就是說當前Redis Cluster支持的最大節點數就是16384

來自:http://blog.csdn.net/suifeng3051/article/details/23739295