Memcached do buforowania sesji i obiektów
Używaj Memcached jako rozproszonego magazynu obiektów PHP w pamięci
Memcached do buforowania sesji i obiektów to bezpłatna lekcja PHP Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej PHP Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs PHP Academy zawiera 4 lekcji w sumie.
Czym jest Memcached?
Memcached to wysokowydajny, rozproszony magazyn klucz-wartość działający w pamięci. Jest powszechnie używany do buforowania wyników zapytań do bazy danych i danych sesji w aplikacjach PHP.
Instalacja
Należy zainstalować serwer Memcached i rozszerzenie PHP.
# Ubuntu/Debian:
$ apt install memcached php-memcached
$ service memcached start
# Verify:
$ php -m | grep memcachedŁączenie z Memcached
Należy utworzyć instancję Memcached i dodać co najmniej jeden serwer.
<?php
$mc = new Memcached();
$mc->addServer("127.0.0.1", 11211);
// Multiple servers (distributed caching):
$mc->addServers([
["192.168.1.10", 11211],
["192.168.1.11", 11211],
]);Podstawowe operacje na pamięci podręcznej
Należy ustawiać, odczytywać, usuwać i zastępować wpisy pamięci podręcznej.
<?php
// Set with TTL:
$mc->set("product:1", $productData, 600); // 10 min
// Get:
$product = $mc->get("product:1");
if ($mc->getResultCode() === Memcached::RES_NOTFOUND) {
$product = fetchFromDB(1);
$mc->set("product:1", $product, 600);
}
// Delete:
$mc->delete("product:1");Przechowywanie sesji za pomocą Memcached
Sesje PHP można przechowywać w Memcached, aby zapewnić szybki, współdzielony dostęp z wielu serwerów internetowych.
# php.ini:
session.save_handler = memcached
session.save_path = "127.0.0.1:11211"Integracja Memcached z Laravel
Należy skonfigurować Memcached i używać go jako sterownika pamięci podręcznej w Laravelu.
# .env
CACHE_DRIVER=memcached
MEMCACHED_HOST=127.0.0.1
// Usage is identical to Redis via Cache facade:
Cache::put("key", $value, 300);
$value = Cache::get("key");Memcached a Redis
Memcached: prostszy, wielowątkowy, działający wyłącznie w pamięci (bez trwałości). Redis: bogatszy zestaw typów danych, opcjonalna trwałość (AOF/RDB), pub/sub i klaster. W przypadku czystego buforowania oba rozwiązania mają podobną wydajność. W nowych projektach zazwyczaj preferowany jest Redis.
Rozproszone buforowanie
Memcached natywnie rozdziela klucze między wiele serwerów za pomocą haszowania konsystentnego. Pozwala to na skalowanie horyzontalne wraz ze wzrostem ruchu.
Atomowe CAS (porównaj i zamień)
Memcached obsługuje operacje CAS, które pozwalają bezpiecznie zaktualizować wartość tylko wtedy, gdy od ostatniego odczytu nie zmienił jej żaden inny klient.
<?php
$mc->get("counter", null, $cas);
$mc->cas($cas, "counter", $newValue, 60);Ograniczenia TTL
Maksymalny czas TTL w Memcached wynosi 30 dni. Wartości większe niż ~1 MB są odrzucane. Wartości pamięci podręcznej powinny być niewielkie i wydajnie serializowane.
Monitorowanie
Należy użyć memcached-tool 127.0.0.1:11211 stats, aby sprawdzić współczynnik trafień, zużycie pamięci i liczbę eksmisji. Niski współczynnik trafień lub duża liczba eksmisji oznacza, że pamięć podręczna jest zbyt mała.
Podsumowanie
Memcached doskonale sprawdza się przy prostym, rozproszonym buforowaniu obiektów i sesji. W Laravelu należy ustawić CACHE_DRIVER=memcached. W środowisku produkcyjnym, gdy potrzebne są bogatsze funkcje, należy preferować Redis.
Szybki test
Jaka jest jedna kluczowa różnica między Memcached a Redisem?
Często zadawane pytania
Czy lekcja „Memcached do buforowania sesji i obiektów” jest bezpłatna?
Tak — pełny tekst „Memcached do buforowania sesji i obiektów” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu PHP Academy, przejdź na CoddyKit PRO. Kurs PHP Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Memcached do buforowania sesji i obiektów”?
Używaj Memcached jako rozproszonego magazynu obiektów PHP w pamięci Ćwiczysz PHP Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć PHP Academy?
Nie wymagamy żadnego doświadczenia. PHP Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Memcached do buforowania sesji i obiektów”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji PHP Academy?
Tak. Każda lekcja PHP Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Dlaczego buforowanie ma znaczenie w PHP
- Redis jako backend pamięci podręcznej PHP
- Memcached do buforowania sesji i obiektów
- Wzorce unieważniania pamięci podręcznej