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

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精品久久99久久久久 | 亚洲欧美另类久久久精品能播放的 | 四虎影视免费永久在线观看黄 | 国内精品福利视频 | 国产天堂 | 又黑又粗又硬欧美视频在线观看 | 99色视频在线观看 | 欧美中文字幕在线播放 | 亚洲精品二区中文字幕 | 日韩专区第一页 | 99视频在线免费观看 | 欧美人在线一区二区三区 | 免费在线欧美 | 182午夜在线观看 | 亚洲图片一区二区 | 永久黄网站色视频免费观看99 | 久久久久久久久久免免费精品 | 国产呦系列免费 | 精品一区久久 | 草莓视频caomei888 | 成年人看的黄色 | 国产成人综合高清在线观看 | 涩涩的视频在线观看 | 国产精品美女 | 亚洲精品国产第一区二区图片 | 久久精品免视国产 | 欧美成人观看 | 中文字幕亚洲一区 | 国产婷婷一区二区三区 | 九九在线观看高清免费 | 亚洲 欧美 日韩 在线 | 亚洲精品色播一区二区 | 久久黄色一级视频 | 国产视频在线一区 | 亚洲人xxx日本人18 | 99视频国产精品 | 神马午夜不卡影院 | 日本一极毛片兔费看 | 狠狠亚洲婷婷综合色香 | 四虎最新永久免费网址 |