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

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條評論
主站蜘蛛池模板: 性xxx69xxx视频在线观看 | 亚洲成人在线网 | 国产精品久久久久国产精品三级 | 国产99久久亚洲综合精品 | 伊人影院中文字幕 | 午夜影院操一 | 久久99久久成人免费播放 | 亚洲欧美综合乱码精品成人网 | 久久久久蜜桃 | 羞羞视频免费在线观看 | 免费一区二区三区四区五区 | 久久视频精品线视频在线网站 | 国产成人高清亚洲一区91 | 91人人看 | 国产成人综合网在线观看 | 精品在线观看国产 | 亚洲国产成人久久精品动漫 | 亚洲一区二区在线视频 | 久久―日本道色综合久久 | 黄色生活毛片 | 成人免费观看一区二区 | 久久婷婷五色综合夜啪 | 日韩欧美aa级草草免费视频 | 深夜天堂| 99久久精品国产交换 | 欧美一级a毛片人人dvd | 男人天堂视频在线观看 | www黄在线观看 | 国产一级毛片免 | 91精品国产自产91精品 | 色偷偷亚洲第一成人综合网址 | 性ao爱大片 | 国产成人青草视频 | 一级特黄a视频 | 色妞欧美| 91国在线 | 成人国产在线视频在线观看 | 伊人丁香狠狠色综合久久 | 久久青草国产精品一区 | 国产亚洲精品在天天在线麻豆 | 青青青国产在线手机免费观看 |