Memcached
Memcached to otwartoźródłowy, rozproszony system pamięci podręcznej (cache) przechowujący dane w pamięci operacyjnej serwera w prostym modelu klucz–wartość. Jego zadaniem jest przyspieszanie dynamicznych aplikacji i stron poprzez tymczasowe zapamiętywanie wyników kosztownych operacji — najczęściej zapytań do bazy danych — tak, aby nie trzeba było wykonywać ich za każdym razem.
Jak działa Memcached?
Memcached działa jako usługa nasłuchująca w tle, do której aplikacja wysyła pary klucz–wartość. Gdy skrypt potrzebuje danych, najpierw sprawdza cache: jeśli wartość istnieje (trafienie, ang. hit), pobiera ją błyskawicznie z RAM; jeśli nie (chybienie, miss), oblicza wynik, zapisuje go w Memcached i zwraca. Każdemu wpisowi można nadać czas życia (TTL), po którym wygasa. Dane trzymane są wyłącznie w pamięci — po restarcie usługi cache jest pusty, co jest akceptowalne, bo to warstwa bufora, a nie trwałego magazynu. Memcached jest wielowątkowy i łatwo skaluje się poziomo na wiele serwerów.
Zastosowanie w praktyce
Memcached najczęściej cache'uje wyniki zapytań SQL, fragmenty renderowanych stron, dane sesji użytkowników czy obiekty API. W ekosystemie PHP korzystają z niego popularne aplikacje — WordPress, Magento czy Drupal mają wtyczki i moduły integrujące Memcached jako backend cache obiektów, co znacząco redukuje obciążenie bazy przy dużym ruchu.
Na serwerach VPS i dedykowanych Memcached bywa elementem stosu wydajnościowego obok OPcache (cache skompilowanego kodu PHP) i cache stron. W nowych wdrożeniach coraz częściej wypierany jest przez Redis, oferujący bogatsze struktury danych i opcjonalną trwałość, jednak dla prostego, szybkiego cache'owania wartości Memcached pozostaje lekkim i sprawdzonym rozwiązaniem.
Konfigurując Memcached, warto rozsądnie dobrać rozmiar przydzielonej pamięci — zbyt mały spowoduje częste usuwanie wpisów (eviction) i spadek skuteczności cache, a zbyt duży niepotrzebnie zajmie RAM potrzebny innym usługom. Istotny jest też sposób unieważniania danych: po zmianie treści w bazie odpowiadający jej wpis w cache trzeba usunąć lub nadpisać, inaczej użytkownik zobaczy nieaktualne informacje. Dobrze zaprojektowana warstwa cache potrafi wielokrotnie zwiększyć przepustowość serwisu przy niewielkim nakładzie zasobów.
Powiązane pojęcia
Najczęstsze pytania
Czym różni się Memcached od Redis?
Memcached to prosty, wielowątkowy cache klucz–wartość przechowujący wyłącznie dane w RAM, bez zapisu na dysk. Redis oferuje bogatsze struktury danych (listy, zbiory, hasze), trwałość danych, replikację i publikowanie zdarzeń. Memcached bywa lżejszy przy czystym cache'owaniu prostych wartości, natomiast Redis jest bardziej uniwersalny i częściej wybierany w nowych projektach.
