亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

DataRabbit 輕量的數據訪問框架(20)-- 實時

系統 1851 0

在系統架構設計中,使用緩存是最常用的降低數據庫負載和提升性能的策略,緩存的主要目的是減少對數據庫的 Read 操作。但是在不同的情況下,我們需要使用不同形式的緩存。

比如,如果數據表中的數據是靜態的、不會發生變化的,那就非常容易,我們只需要在系統啟動的時候,將其加載到內存,以后每次從內存讀取數據即可。

再比如,數據表中的數據會發生變化(增刪改),但是變化的頻率非常低,而恰巧我們的系統對數據實時性的敏感度也不是特別高,那我們可以使用定時刷新的緩存,DataRabbit 中也內置了對這種緩存的支持,可以參見 DataRabbit 輕量的ORM框架(16)-- Entity緩存

再比如,數據表中的記錄非常多,并且修改方面只會有Insert操作,那么我們可以使用HotCache,把那些經常使用的記錄緩存在內存中,并且設定超時機制。HotCache我們會在后面介紹。

再比如,某個數據表的修改經常是Insert和Update操作,但是無論如何Update,每條記錄有些固定欄位的值都是不會發生變化的,那我們可以把這些不會發生變化的欄位封裝在一個【子對象】中,然后在內存中緩存這些子對象。

舉了這么多例子,現在我們進入本文正題,假設我們的某個數據表中的數據會發生變化(增刪改),但是變化的頻率比較低,但是我們的系統對這個表的數據的實時性的敏感度也特別高,那這時候我們就需要用到【實時同步的實體緩存】,這個緩存中的數據在任何時候都與數據表中的數據是完全一致的。

DataRabbit 中的SyncEntityCache就是這樣的緩存。

當然,使用這樣的實時同步緩存有一個前提是必須保證的,那就是對目標數據表的修改都必須經由SyncEntityCache來進行,這個前提應該還是比較容易保證的。

我們來看看ISyncEntityCache接口的內容:

DataRabbit 輕量的數據訪問框架(20)-- 實時同步的實體緩存 SyncEntityCache

該接口有兩個泛型參數:TPKey和TEntity,TPKey表示數據表主鍵的類型,TEntity就是目標Entity的類型。

其三個屬性分別是:

TransactionScopeFactory 表明目標數據表位于哪個數據庫中。

PKeyName 即主鍵列的名稱。

PKeyAutoIncreased 表示主鍵是否為自增類型。

然而,能被緩存的Entity必須實現ISyncCachedEntity接口:

DataRabbit 輕量的數據訪問框架(20)-- 實時同步的實體緩存 SyncEntityCache

基接口ICachedEntity的GetID()方法用于返回Entity的主鍵字段的值。ISyncCachedEntity繼承了ICloneable接口,表明Entity是必須可以復制的,繼承這個接口的緣由后面會介紹到。

當系統啟動時,我們調用Initialize方法從數據庫中加載目標表的所有記錄。接著我們就可以通過GetEntityCopy()方法和GetEntityCopyList()方法來讀取需要的Entity。注意這兩個方法的名稱中包含了“Copy”,這表明它們會返回緩存的Entity的副本。所以,即使你對返回的副本進行修改,也不會影響到緩存中的Entity。

顯然,這兩種方法的效率會因為Entity的clone而有輕微降低。但是,如果你 能保證 讀取的Entity僅用于Read,那么你可以調用GetEntityList4Read()這個效率更高的方法,它將直接返回緩存中的Entity。

另外,你看到ISyncEntityCache提供了基本的增刪改的方法,我們必須調用這些方法來修改目標數據表中的記錄,而且這些方法會自動同步緩存中的Entity使其與數據庫中一致。

最后,ISyncEntityCache提供了Reload()方法,該方法用于目標數據表中的記錄在意外的情況下發生修改時(即修改不是通過ISyncEntityCache進行的),手動刷新緩存以獲得與數據庫中的數據完全的一致性。

DataRabbit.Application.Cache.SyncEntityCache 類實現了ISyncEntityCache接口,并且這個實現是線程安全的,你可以在多線程的環境下放心使用。

DataRabbit3.0及以上版本對上述策略都給予了充分的支持,你可以下載 最新版本 試試。

關于DataRabbit的更多信息目錄,參見 這里

DataRabbit 輕量的數據訪問框架(20)-- 實時同步的實體緩存 SyncEntityCache


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产美女久久久久 | 国产午夜精品久久久久免费视 | 九九免费精品视频 | 狠狠狠色丁香婷婷综合久久五月 | 久久精品国产亚洲麻豆 | 免费欧美一级 | 97在线免费观看视频 | 婷婷免费高清视频在线观看 | 欧美成人免费香蕉 | 国产成人综合95精品视频免费 | 99资源在线观看 | 一级毛片免费网站 | 香蕉久久久| 动漫三级在线观看 | 四虎 影院ww9584h | 91视频论坛 | 丁香婷婷网| 另类综合视频 | 韩国爱情片免费大全 | 成人牲交一极毛片 | 国产高清国产精品国产k | 亚洲阿v天堂在线观看2017 | 手机看片久久高清国产日韩 | 曰本黄色录像 | 在线观看黄p免费 | 欧美精品在线看 | 欧美在线 | 亚洲 | 国产精品视频一区牛牛视频 | 四虎影视永久在线精品免费播放 | 爱爱视频免费网站 | 亚洲一级毛片免费看 | 99久久国产综合精品女不卡 | 精品国产品香蕉在线观看 | 91精品中文字幕 | 久久人人澡 | 手机看片久久国产免费不卡 | 日本一本不卡 | 精品日产一区二区三区手机 | 亚洲伦理精品久久 | 亚洲精品一区二区三区美女 | 天天拍天天干天天操 |