memcached - 使用mongodb搭配memcache
PHPz
PHPz 2017-04-24 15:59:35
0
3
848

網站預計會有很大的查詢量,相較之下寫入資料庫的操作要少很多。
我想的是把資料庫內容分成兩種,一種是用來索引的內容,內容包含各種所需資訊對應的索引項,另一種是其他所要查詢的具體資料內容。
先將具體內容存入memcache,查詢時透過從資料庫中得到的索引值再從memcache中取得對應資料;
寫入資料時則直接寫在mongodb中;
不知道這種做法有什麼不妥,來這尋求下建議~~

PHPz
PHPz

学习是最好的投资!

全部回覆(3)
Peter_Zhu

這是一個典型的快取使用場景,基於你使用的技術方案,有幾點是需要考慮清楚的:

  1. 既然選用mongodb,那你這個查詢場景應該是盡量用一個key能獲取到整個文檔的數據,這種查詢正是mongodb最擅長的,理論上都不需要再做任何優化了。
  2. 如果你除了上面這個情況,會有多次查詢才能得到想要結果的情況,可以考慮使用緩存,現在感覺使用Redis會比Memcached更靈活一點。具體一點處理步驟:
    (1) 每次查詢先去快取找是否已經有value
    (2) 如果沒有,就是把你的查詢條件依照一定的規則當作key,查詢結果當作value,存入快取並回傳本次查詢結果。
    (3) 如果有就直接返回(根據業務需求還要做快取的失效控制,例如有效時長或有新的寫入)
我想大声告诉你

「先將具體內容存入memcache,查詢時透過從資料庫中得到的索引值再從memcache中取得對應資料;」這句話,沒太理解,資料要保存到快取中嗎,要是宕機資料不就沒了。

小葫芦

我覺得不知道樓主業務量有多少, mongodb是個混合型數據庫, 就是mongodb也有內存數據庫部分, 寫入瓶頸mongodb並不差, 所以讀的業務應該放到redis這種純的內存數據庫中, 寫的業務就沒必要在費事直接存mongo不是更好?

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板