1. 快取是什么,各級快取
2. 本地快取原理和實作
3. 快取應用和快取更新
快取:為了快速獲取結果,在第一次獲取資料后存起來,下次直接使用
快取一般用在哪里?
1. 會重復的請求
2. 資料相對穩定
3. 耗時/耗資源
4. 體積不大
組態檔;選單-權限;省市區;類別資料;
熱搜;公告;技能/屬性;資料字典;
分頁(只要資料不是經常變)
如果一個資料快取一次,能夠被有效查詢4次,那這個快取就是值得的(大型系統的時候,為了性能,為了壓力,需要更多的快取)
快取本身是共享的,所以每個快取應該是唯一的
本地快取空間小,不能跨行程共享
小專案一般隨便快取
中大型專案不夠用的,一般就會使用分布式快取
如:
Memcached:記憶體管理
Redis: REmote DIctionary Server
下面附上我學習使用的自建簡單Cahce快取代碼:
/n /// 執行緒安全的Dictionary集合/n /// /n public static Dictionary> CustomCacheDictionary;/n/n /// /n /// 快取需要自動清理:防止過多無用快取/n /// /n static CustomeCache()/n {/n CustomCacheDictionary = new Dictionary>();/n Console.WriteLine($/"{DateTime.Now.ToString(/"MM-dd HH:mm:ss fff/")}初始化快取/");/n Task.Run(() =>/n {/n while (true)/n {/n LockAction(new Action(() => {/n List list = new List();/n foreach (var key in CustomCacheDictionary.Keys)/n {/n var valueTime = CustomCacheDictionary[key];/n if (valueTime.Value > DateTime.Now)/n {/n //沒有過期就不用管/n }/n else {/n //過期就統一將key放入list中/n list.Add(key);/n }/n }/n list.ForEach(key => CustomCacheDictionary.Remove(key));/n }));/n Thread.Sleep(1000 * 60 * 15);//每15分鐘清理一次/n }/n });/n }/n/n private static readonly object CustomCache_Lock = new object();/n public static void LockAction(Action action)/n {/n lock (CustomCache_Lock)/n {/n action.Invoke();/n }/n }/n/n /// /n /// 添加快取資料/n /// /n /// /n /// /n /// /n public static void Add(string key, object value, int second = 1800) {/n LockAction(new Action(() =>/n {/n CustomCacheDictionary.Add(key, new KeyValuePair
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/99123.html
標籤:C#
上一篇:C#性能優化雜七雜八的總結
下一篇:stata.dta轉csv