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

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條評論
主站蜘蛛池模板: 99久久精品国产免看国产一区 | 亚洲第五色综合网 | 久九色 | 欧美aaa大片 | 国产精品一级香蕉一区 | 欧美第一区| 亚洲骚片 | 亚洲综合日韩在线亚洲欧美专区 | 奇米第七色 | 97久久免费视频 | 欧美日日夜夜 | 四虎精品免费永久在线 | 免费播放国产一级 | 欧美成人免费公开播放 | 一区两区三不卡 | 欧美视频一区 | 久久狠狠第一麻豆婷婷天天 | 免费看一级黄色毛片 | 国产图片亚洲精品一区 | 越猛烈欧美xx00动态图免费 | 老子影院午夜久久亚洲 | 亚洲一级黄色大片 | 四色婷婷| 99视频精品免费99在线 | 激情久久婷婷 | 国产一区免费视频 | 天天操天天射天天舔 | 日日夜夜骑 | 精产网红自拍在线 | 欧美三级一区二区 | 四虎影视成人永久在线观看 | 色老头久久久久久久久久 | 看真人一级毛多毛片 | 日本精品高清一区二区不卡 | 久色视频在线观看 | 欧美一级毛片久久精品 | 福利网站在线观看 | 好看的亚洲视频 | 国产91在线 | 中文 | 国产91在线 | 日本 | 天天操天天干天天摸 |