2012-07-30 83 views
0

下面是場景: 這裏是一個訪問統計系統,就像Blogger的overviewstats函數一樣。 統計數據在數據庫(如MySQL)中持久存儲,而使用鍵值緩存(現在是memcache)來緩存訪問計數,每個訪問只會更新緩存中的值。解決方案將緩存值同步到數據庫?

現在的問題是如何將最新的計數值同步到數據庫? 正常的解決方案是在某段時間後回寫,但是當沒有足夠的空間時,memcache將放棄項目,某些更新可能會丟失。 所以我認爲更好的解決方案是,如果memcache可以在丟棄某個項目時發送消息(如JMS),然後我可以將該項目同步到數據庫。 看來,memcache不提供此功能,有沒有其他的鍵值緩存可以做到這一點? 或者有沒有更好的解決方案?

回答

0

Memcached是一個緩存,所以你需要將它作爲一個。在更新memcached中的訪問計數時,還應該使更新排入隊列,以便它們可以異步寫入數據庫。這樣,從緩存中退出的計數就可以從數據庫重新加載。

我喜歡memcached排入即將被丟棄的項目的想法,但由於性能考慮,它可能不會在主項目中發生。

+0

謝謝,實際上我們使用隊列來異步更新數據庫。我只是找到一些更好的解決方案,以避免每次訪問更新數據庫,我認爲沒有必要 – situch 2012-07-31 11:23:22