Dot-Net

與 .NET Cache 系統相比,Memcached 有哪些優勢?

  • September 8, 2011

我在一個開發團隊中看到有人使用Memcached來記憶體數據庫結果,而不是內置的 .NET Framework Cache 系統。我不清楚他們為什麼要使用這個特定的記憶體。

也許性能更好。

無論如何,使用 Memcached(而不是本機 .NET 記憶體)有什麼真正的優勢嗎?

Memcached 是分佈式的——重要的是,這意味著如果我有一組伺服器訪問記憶體,那麼所有這些伺服器本質上都是從同一個記憶體讀取和寫入。內置的 .Net 記憶體沒有這個功能(至少我知道 ASP.Net 沒有)。

由於每台機器都有自己獨立的記憶體,這意味著(例如):

  • 如果機器 A 計算/讀取一個值並將其放入記憶體中,則機器 B 不會從中獲得任何好處。每台機器都需要獨立維護和填充自己的記憶體。這也可能會浪費空間,因為相同的條目可能存在於許多不同機器的記憶體中。
  • 如果機器 B 使記憶體條目無效,則機器 A 不會意識到此無效,並且可能會繼續使用陳舊/過期的數據

Memcached 沒有這些問題——一旦將條目放入記憶體中,集群中的所有機器都可以檢索相同的記憶體項。使記憶體中的條目無效會使每個人都無效。

缺點

如果您的應用程序需要在一組機器上執行,那麼您很可能會從分佈式記憶體中受益,但是如果您的應用程序只需要在單台機器上執行,那麼您將不會從使用分佈式記憶體中獲得任何好處使用內置的 .Net 記憶體可能會更好。

  • 訪問 memcached 記憶體需要程序間/網路通信,與程序中的 .Net 記憶體相比,這將產生較小的性能損失。
  • Memcached 作為外部程序/服務工作,這意味著您需要在生產環境中安裝/執行該服務。同樣,.Net 記憶體不需要此步驟,因為它們是在程序中託管的。

引用自:https://stackoverflow.com/questions/7348273