Dot-Net
與 .NET Cache 系統相比,Memcached 有哪些優勢?
我在一個開發團隊中看到有人使用Memcached來記憶體數據庫結果,而不是內置的 .NET Framework Cache 系統。我不清楚他們為什麼要使用這個特定的記憶體。
也許性能更好。
無論如何,使用 Memcached(而不是本機 .NET 記憶體)有什麼真正的優勢嗎?
Memcached 是分佈式的——重要的是,這意味著如果我有一組伺服器訪問記憶體,那麼所有這些伺服器本質上都是從同一個記憶體讀取和寫入。內置的 .Net 記憶體沒有這個功能(至少我知道 ASP.Net 沒有)。
由於每台機器都有自己獨立的記憶體,這意味著(例如):
- 如果機器 A 計算/讀取一個值並將其放入記憶體中,則機器 B 不會從中獲得任何好處。每台機器都需要獨立維護和填充自己的記憶體。這也可能會浪費空間,因為相同的條目可能存在於許多不同機器的記憶體中。
- 如果機器 B 使記憶體條目無效,則機器 A 不會意識到此無效,並且可能會繼續使用陳舊/過期的數據
Memcached 沒有這些問題——一旦將條目放入記憶體中,集群中的所有機器都可以檢索相同的記憶體項。使記憶體中的條目無效會使每個人都無效。
缺點
如果您的應用程序需要在一組機器上執行,那麼您很可能會從分佈式記憶體中受益,但是如果您的應用程序只需要在單台機器上執行,那麼您將不會從使用分佈式記憶體中獲得任何好處使用內置的 .Net 記憶體可能會更好。
- 訪問 memcached 記憶體需要程序間/網路通信,與程序中的 .Net 記憶體相比,這將產生較小的性能損失。
- Memcached 作為外部程序/服務工作,這意味著您需要在生產環境中安裝/執行該服務。同樣,.Net 記憶體不需要此步驟,因為它們是在程序中託管的。