我正在爲使用MongoDB作爲其數據庫引擎的網站上的產品寫一個訪問計數器。MongoDB緩存計數器
Here它說,Mongo保持經常訪問的東西在內存中,並有一個集成的內存中的緩存引擎。
那麼我可以在這個集成的緩存系統上進行中繼,並在每次訪問時默認設置計數器,還是在高流量環境下仍需要另一個緩存層?
我正在爲使用MongoDB作爲其數據庫引擎的網站上的產品寫一個訪問計數器。MongoDB緩存計數器
Here它說,Mongo保持經常訪問的東西在內存中,並有一個集成的內存中的緩存引擎。
那麼我可以在這個集成的緩存系統上進行中繼,並在每次訪問時默認設置計數器,還是在高流量環境下仍需要另一個緩存層?
他們是兩個分開的東西。 MongoDB使用一個簡單的分頁內存管理系統,通過設計將內存映射磁盤空間的最多訪問部分保存在內存中。
因此,這對您經常請求但不經常更改的計數器的幫助最大。不幸的是,網站計數器這兩件事是相互排斥的。因爲遞增計數器通常不會導致MongoDB移動磁盤上的計數器的文檔,讀取緩存仍然相當有效。
主要問題是您的寫入,基本上每次訪問增加不會是非常符合成本效益。我建議一種策略,在您的計數器Web應用程序中緩存即將到來的訪問,並且只在每次X次訪問或每Y秒時(以先到者爲準)推送計數器更新。您的主要目標是減少每秒寫入次數,因此您絕對不希望每次訪問計數器時都要寫入一次數據庫寫入。
雖然我從來沒有工作過的那種系統的你描述,我會做以下(假設我已經正確地讀出你的問題,你做的確實只是想增加每次訪問計數器) 。
$inc
運營商原子進行增量,或使用upserts with modifiers創建文檔結構,如果它已不存在
我決定存儲在會話廣告訪問和他們耗到服務器每隔X分鐘或Y網頁點擊量。 Dank u wel。 – thwd