考慮以下數據模型接近:緩存奇異數據庫記錄
假設我有一個被稱爲「SuperAwesomeData」表,其中每個記錄映射到其通過使用主鍵檢索稱爲「SuperAwesomeData」的對象的一個實例表「SuperAwesomeData」。我的問題是什麼緩存策略最適合管理個人記錄?我需要仍然可以通過它的主鍵請求「SuperAwesomeData」記錄。
考慮以下數據模型接近:緩存奇異數據庫記錄
假設我有一個被稱爲「SuperAwesomeData」表,其中每個記錄映射到其通過使用主鍵檢索稱爲「SuperAwesomeData」的對象的一個實例表「SuperAwesomeData」。我的問題是什麼緩存策略最適合管理個人記錄?我需要仍然可以通過它的主鍵請求「SuperAwesomeData」記錄。
那麼,給SQL足夠的內存,無論如何你可能會找到它的緩存內容。除此之外,一個基本的緩存想法將爲你工作 - 爲你的表(或者業務對象,最好)創建一個緩存實體,並簡單地使用類似字典的東西來提供鍵值關聯。
然後,你需要做的只是在緩存失效或壽命中工作,而你已經排序。緩存層通常圍繞業務層徘徊,因爲業務邏輯可以決定內存中的內容是否適合您,或者陳舊。
不要重新發明任何東西,有很多圍繞着提供緩存基礎設施緩存解決方案:ASP.NET緩存,分佈式緩存,AppFabric中......
緩存是一個小寶石,當涉及到提高性能,因爲它消耗的全部都是記憶 - 這變成了一分錢。然而,就像任何與性能相關的東西,不要以爲你需要它,直到你需要它 - 也就是說,數據庫訪問速度慢,網絡速度慢,你有數百萬用戶訪問相同的數據等。
首先將你的代碼配置文件!
我站好了。 :)我遇到過去的情況,客戶端應用程序沒有使用緩存,並且正在執行20,000多個查詢(每個查詢或多或少地立即提供服務),此時,網絡成爲超常緩慢的重要因素該特定應用程序。 – 2010-07-14 20:58:48
完全同意性能優化點 - 除非發現問題,否則不要這樣做。 – niaher 2010-07-15 04:35:14
如果底層數據發生變化,這不是取決於您希望如何行爲嗎?就目前而言,我不知道任何人都可以回答這個問題。 – 2010-07-14 20:52:26