我看到開發團隊中的一些人使用Memcached來緩存數據庫結果,而不是內置的.NET Framework Cache系統。我不明白爲什麼他們會使用這個特定的緩存。與.NET Cache系統相比,Memcached有什麼優勢?
也許性能更好。
無論如何,使用Memcached(而不是本地.NET Cache)有沒有真正的優勢?
我看到開發團隊中的一些人使用Memcached來緩存數據庫結果,而不是內置的.NET Framework Cache系統。我不明白爲什麼他們會使用這個特定的緩存。與.NET Cache系統相比,Memcached有什麼優勢?
也許性能更好。
無論如何,使用Memcached(而不是本地.NET Cache)有沒有真正的優勢?
Memcached是分佈式的 - 至關重要的是,這意味着如果我有一羣服務器訪問緩存,它們實質上都是從相同的緩存讀取和寫入。內置的.Net緩存沒有這個功能(至少我知道ASP.Net不支持)。
由於每臺機器都有自己獨立的緩存,這意味着(舉例):
Memcached中既沒有這些問題 - 一旦一項放在在緩存中,羣集中的所有機器都可以檢索相同的緩存項目。使高速緩存中的條目無效將使每個人都無效。
缺點
如果你的應用需要的機器集羣上函數,那麼它很可能,你將受益於分佈式緩存,但是如果你的應用程序只需要在一臺機器上運行,那麼你不會從使用分佈式緩存中獲得任何好處,並且使用內置的.Net緩存可能會更好。
「訪問一個memcached緩存需要進程間/網絡通信,這對正在處理的.Net緩存的性能影響不大。」 - >有沒有人在進程與memcached(位於相同的AWA地區/同一機架中)進行基準測試?有興趣看看In-Process vs. Memcache vs.數據庫。 – dazbradbury
Memcached的更好的比較實際上是Azure App Fabric Caching,它與.NET 4和Azure一起被添加。它是一個分佈式羣集緩存解決方案,用於集羣和雲計算。然而,Memcached也已經存在了很長一段時間(我認爲,2003年是這樣),所以已經很成熟了,並被認爲是評判其他人的基準。 Memcached也被移植到那裏的所有語言,並可以在Linux或Windows服務器上運行。 Azure緩存還是比較新的,所以還沒有很多人真正使用它。
Azure應用結構緩存鏈接不起作用 –
我會選擇memcached或AppFabric,它們都支持高可用性和容錯性集羣,就像剛剛提到的Justin一樣。 –