我們目前有一個應用程序框架,我們可以在業務層(使用.NET緩存)自動緩存實體和實體集合。因此,GetWidget(int id)方法在訪問數據庫之前使用密鑰GetWidget_Id_ {0}檢查緩存,GetWidgetsByStatusId(int statusId)方法使用GetWidgets_Collections_ByStatusId_ {0}檢查緩存。如果對象不在緩存中,則從數據庫中檢索它們並將其添加到緩存中。實體和集合的緩存策略
這種方法對於讀取場景來說顯然很快,而且我們可以快速實現,但需要在對實體執行CRUD操作時清除大量緩存鍵。很明顯,隨着其他方法的增加,這會影響性能和緩存的好處。
我對處理集合緩存的替代方法感興趣。我知道NHibernate緩存集合中的標識符列表,而不是實際的實體。這是其他人嘗試過的方法嗎?有什麼優點和缺點?
特別是我正在尋找優化性能的選項,並且可以通過樣板生成的代碼自動實現(我們有自己的代碼生成工具)。我知道有些人會說緩存需要每次手動完成以滿足特定情況的需求,但我正在尋找能夠讓我們自動完成大部分任務的方法。
意見問題應該在Programmers.StackExchange上:http://programmers.stackexchange.com – CAbbott
@CAbbott我認爲這個問題符合常見問題解答中的問題 - 它涉及到「特定的編程問題」並且是可以回答的。 –
我想說,你不是在問一個「實際的編程問題」,即「我寫了* X *並且它不工作」,而是你正在徵求*意見*以引發討論。 – CAbbott