利用memorycache對「特定函式的特定輸入」的執行結果做快取,那麼可以節省大量對db和redis的訪問。
從外部對函式的執行結果做快取,相比於修改函式在函式內部做快取,更加松耦合,沒有侵入性。
using system;
using system.collections.concurrent;
using system.collections.generic;
using system.linq;
using system.runtime.caching;
using system.text;
using system.threading;
using system.threading.tasks;
namespace wsq.common
else
mc.set(key, dd, datetime.now.addmilliseconds(cachemilli));
return dd;
}} private class cacheinfo
}private static concurrentdictionarydiccacheinfo = new concurrentdictionary();
/// /// 用memorycache快取getdata的結果。func部分可以 ()=>getdata(a,b,c)。
/// 在快取快過期的時候,按需啟動執行緒去提前重新整理快取,以盡量避免func太慢導致的偶發響應變慢。
///
///
/// 注意key要夠獨特
///
///
///
///
public static t withcacherefresh(string key, funcgetdata, double cachemilli = 1000) where t : new()
);object obj = mc.get(key);
if (obj != null)
return (t)obj;
}else
mc.set(key, dd, datetime.now.addmilliseconds(cachemilli));
info.lastcachetime = datetime.now;
info.cachemilli = cachemilli;
return dd;
}} /// ///
///
///
///
///
///
private static void checkrefreshcache(string key, funcgetdata, double cachemilli) where t : new()
trymc.set(key, dd, datetime.now.addmilliseconds(cachemilli));
info.lastcachetime = datetime.now;
info.cachemilli = cachemilli;
}catch (exception)
info.isrefreshing = false;
} }}
如何方便的建立遠端鏈結伺服器
很多朋友問區域網多資料庫伺服器訪問該如何操作?下面簡單說明如何配置遠端鏈結訪問。環境說明 源機器ip 為10.0.0.211 在該機器所在資料庫建立與目標機器的遠端資料庫鏈結。目標機器ip為 10.0.0.222。步驟 一 是指直接用 ip進行遠端鏈結,個人覺得用 ip鏈結雖然麻煩,但是直觀而且在多...
雲原生時代如何方便的進行本地除錯
如果團隊內成員都有k8s基礎,並且都用win10或者linux,macos,那建議直接用telepresence,簡單直接。詳見 fast development workflow with docker and kubernetes,a development workflow for kuber...
dll加入到GAC後,如何方便的除錯
當你把dll加入到gac後,除錯的時候系統會先去gac中去找,為了實現除錯,我們每次修改程式編譯後,都要把它重新加到gac中,比較繁瑣。起始我們可以用另一種方法來避免這種繁瑣。1 新增乙個環境變數devpath,value為要除錯的dll檔案的路徑,如c debug 2 在c winnt micro...