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

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條評論
主站蜘蛛池模板: 久久青草18免费观看网站 | 欧美性色生活片天天看99 | 被公侵犯肉体中文字幕一区二区 | 毛片免费观看视频 | 国产一级黄色网 | a免费毛片在线播放 | 欧美第一视频 | 91成人免费观看在线观看 | 日日躁夜夜躁狠狠天天 | 精品日产一区二区三区手机 | 国产一级做a爱免费视频 | 亚洲va欧美va国产综合久久 | 欧美成人天天综合天天在线 | 国产精品www | 免费毛片看 | 站长推荐国产午夜免费视频 | 天天爽夜夜爽夜夜爽精品视频 | 久久视频这里只精品3国产 久久视频这里只有精品 | 狠狠色噜噜狠狠狠狠狠色综合久久 | 午夜毛片视频 | 国产高清在线精品一区二区 | 国产三级久久久精品三级 | 国产成人啪精品视频免费网 | 日本aa视频 | 91精品推荐| 久久精品网 | 99久久精品国产高清一区二区 | 久久久久久久久久免免费精品 | 2021国产精品自产拍在线观看 | 很狠操| 日韩欧美中文字幕在线播放 | 久久日本精品99久久久 | 国产亚洲精品日韩综合网 | 婷婷涩涩 | 欧美日韩激情在线 | 99国产精品久久久久久久日本 | 国产日本欧美亚洲精品视 | 九九精品成人免费国产片 | 91精品国产福利在线观看性色 | 亚洲免费观看视频 | 超乳w真性中出し冲田杏梨101 |