天天看點

Lind.DDD.Caching分布式資料集緩存介紹

比較頁面緩存,資料集緩存就感覺優異了不少,它緩存的是資料,而不是頁面,即它省去了連結資料庫的時間,而直接用緩存,檔案,redis等中間件上傳回内容,目前你的中間件為了提升性能,可以采用叢集機制,這在一些NoSql上實作非常容易,或者說Nosql就是為了緩存而産生的,呵呵!

緩存特性

這個CachingAttribute 特性被使用者添加到指定的方法上,有get,put,remove等枚舉類型,分别為讀緩存,寫緩存和删除緩存。

緩存攔截器

攔截器起源于面向切面的程式設計aop裡,它也是aop設計的精髓,即将指定方法攔截,然後注入新的代碼邏輯,在不修改原有代碼的情況下,完成這個功能,在攔截器裡,我們為不同的項目添加了不同的名稱,這是為了避免在多項目情況下,緩存鍵名重複的問題,因為我們的緩存内容都是存儲在同一個中間件上的。

緩存實作者

目前大叔的架構中,資料集緩存有redis和内容兩種實作方式,在多web伺服器的情況下,隻能采用redis這種中間存儲伺服器。

緩存生産者

緩存生産者與日志,消息等生産者類似,由于全局使用一個執行個體即可,是以在設計時采用了單例模式,工廠模式,政策模式等,目前在工廠裡隻有EntLib記憶體緩存和redis分布式緩存兩種,詳細請見代碼。

最後,我們的緩存使用需要在接口的方法或者虛方法上進行聲明,因為我們的攔截使用了Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptionConfigurationExtension攔截器元件,實作原因是生成一個代理類,并重寫指定的被攔截的方法,是以要求你的方法是接口方法或者虛方法。

感謝各位的耐心閱讀,請繼續關注Lind.DDD大叔架構設計437541737