<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      [NewLife.XCode]對象字典緩存(百萬軍中取敵首級)

      NewLife.XCode是一個有10多年歷史的開源數據中間件,支持nfx/netcore,由新生命團隊(2002~2019)開發完成并維護至今,以下簡稱XCode。

      整個系列教程會大量結合示例代碼和運行日志來進行深入分析,蘊含多年開發經驗于其中,代表作有百億級大數據實時計算項目。

      開源地址:https://github.com/NewLifeX/X (求star, 770+)

       

      單對象緩存

      前文提到了以sql為key的數據層緩存,以及整表緩存的實體列表緩存,各自有其優缺點,適用于不同場合。

      當單表數據較大(10萬+)時,兩者就無能為力了。天空一道巨響,對象字典緩存隆重登場!

       

      對象字典緩存:以主鍵為key,緩存實體對象,以滿足應用層的高頻單點查詢需求!

       

      例程跑起來:

      先給學生表加了100萬行,再隨機生成1024個編號,然后查詢1000萬次。速度200萬qps,命中率99.99%。

       

      緩存本質

      Student.FindByID內使用了單對象緩存:Meta.SingleCache[id];

      單對象緩存本質就是并行字典,因此使用方式上只需要直接索引器查找即可。

       

      在Meta.SingleCache內查找id時,如果已存在,則直接返回,否則執行委托Student.FindByKey查找對象后緩存起來。

      非XCode用戶,也可以根據該思想設計自己的緩存。

       

      單對象緩存也有過期時間,默認10秒,過期后異步更新(老規矩,為了性能)。

      單對象緩存還會根據LRU定期清理緩存,此時采用最后訪問時間而不是過期時間。

       

      對象緩存還有最大緩存數限制,默認10000個,超過時刪除最久未訪問緩存數據。

       

       

       

      因此,單對象緩存特別適用于單行特點很突出且修改不多的數據,如用戶表、產品表等。

      即使目標表有千萬級數據,單對象字典緩存仍然可以輕松的取敵首級!^_^

       

      從鍵查詢 

       前面實例展示了根據ID查找緩存對象,實際應用場景,還可能會根據名稱進行查找,總不能另外搞一個對象緩存吧?

      來自深圳的海洋餅干,很有創意的解決了這個問題,發明了從鍵緩存!

      如上,Meta.SingleCache.GetItemWithSlaveKey(name) 實現了根據 name 查詢用戶。

      在此之前,需要手工配置查詢方法,因為XCode已經無法猜測得知。

       

       使用從鍵緩存后,等于有兩個入口(FindKey/FindSlaveKey)查詢數據庫,得到一個實體對象后,分別加入主鍵字典和從鍵字典,用于兩個維度索引查詢。

      因此,從鍵緩存需要配置根據從鍵查數據庫的方法FindSlaveKeyMethod,同時還需要配置實體對象獲取從鍵值的方法GetSlaveKey,因為主鍵查庫后加入從鍵緩存時,需要從對象內得到從鍵值。

       

      過期策略

      所有緩存都必須有過期策略。單對象字典緩存的過期策略有以下:

      • 初始化。首次訪問緩存時,無需阻塞,并行查詢。
      • 定時過期。緩存過期后,開異步線程更新并同時返回舊數據,確保應用層性能。設置文件的 SingleCacheExpire, 默認10秒
      • 添刪改過期。對實體類的添刪改操作完成后,都會直接修改緩存對應項。

      顯然,初始化加載以后,將來訪問的永遠是定時更新的緩存數據,應用層可以得到非常好的性能!

      由于緩存的添刪改過期跟實體操作綁定在一起,因此,越過實體類直接DAL執行更新操作,或者其它服務器修改數據,此時無法影響實體緩存,導致數據更新不及時。

      早期版本XCode緩存默認過期時間60秒,隨著數據庫性能提升,默認值修改為10秒,可根據實際場景設置。

       

       

       

      系列教程

      NewLife.XCode教程系列[2019版]

      1. 增刪改查入門。快速展現用法,代碼配置連接字符串
      2. 數據模型文件。建立表格字段和索引,名字以及數據類型規范,推薦字段(時間,用戶,IP)
      3. 實體類詳解。數據類業務類,泛型基類,接口
      4. 功能設置。連接字符串,調試開關,SQL日志,慢日志,參數化,執行超時。代碼與配置文件設置,連接字符串局部設置
      5. 反向工程。自動建立數據庫數據表
      6. 數據初始化。InitData寫入初始化數據
      7. 高級增刪改。重載攔截,自增字段,Valid驗證,實體模型(時間,用戶,IP)
      8. 臟數據。如何產生,怎么利用
      9. 增量累加。高并發統計
      10. 事務處理。單表和多表,不同連接,多種寫法
      11. 擴展屬性。多表關聯,Map映射
      12. 高級查詢。復雜條件,分頁,自定義擴展FieldItem,查總記錄數,查匯總統計
      13. 數據層緩存。Sql緩存,更新機制
      14. 實體緩存。全表整理緩存,更新機制
      15. 對象緩存。字典緩存,適用用戶等數據較多場景。
      16. 百億級性能。字段精煉,索引完備,合理查詢,充分利用緩存
      17. 實體工廠。元數據,通用處理程序
      18. 角色權限。Membership
      19. 導入導出。Xml,Json,二進制,網絡或文件
      20. 分表分庫。常見拆分邏輯
      21. 高級統計。聚合統計,分組統計
      22. 批量寫入。批量插入,批量Upsert,異步保存
      23. 實體隊列。寫入級緩存,提升性能。
      24. 備份同步。備份數據,恢復數據,同步數據
      25. 數據服務。提供RPC接口服務,遠程執行查詢,例如SQLite網絡版
      26. 大數據分析。ETL抽取,調度計算處理,結果持久化

       

      posted @ 2019-04-21 00:58  大石頭  閱讀(2285)  評論(10)    收藏  舉報
      主站蜘蛛池模板: 亚洲一区久久蜜臀av| 蜜臀av色欲a片无人一区| 亚洲综合精品第一页| 国产av不卡一区二区| 92国产精品午夜福利免费| 377P欧洲日本亚洲大胆| 国产视色精品亚洲一区二区| 人与禽交av在线播放| 日韩av无码一区二区三区| 妺妺窝人体色www看美女| 国产麻豆放荡av激情演绎| 国产av无码专区亚洲av软件| 国产呦交精品免费视频| 国产高跟黑色丝袜在线| 中文字幕国产精品二区| 国产精品无码不卡在线播放| 亚洲另类激情专区小说图片 | 国产中文三级全黄| 丁香花成人电影| 国产精品一区高清在线观看| 国产精品乱码久久久久久小说 | 亚洲成av人片无码迅雷下载| 国产av第一次处破| 国产久久热这里只有精品| 欧美寡妇xxxx黑人猛交| 男女一级国产片免费视频| 东丰县| 最新国产精品好看的精品| 成人免费在线播放av| 国产三级精品三级在线看| 国产极品粉嫩尤物一区二区| 国产成人毛片在线视频| 国产精品一区二区三区91| 久久人与动人物a级毛片| 国产97视频人人做人人爱| 精品亚洲国产成人性色av| 97色伦97色伦国产| 亚洲精品国产无套在线观| 五原县| 在线精品国产中文字幕| 国产亚洲精品岁国产精品|