C 如何方便的給函式加快取

2021-09-18 06:16:24 字數 1633 閱讀 7444

利用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...