Chcę użyć memcached
http://www.danga.com/memcached/
Zainstalowałem to przez yum install memcached
Ale teraz muszę połączyć się z PHP, a istnieje rozszerzenie o nazwie memcache i jedno o nazwie memcached? ARGH
http://us3.php.net/manual/en/book.memcache.php
http://us3.php.net/manual/en/book.memcached.php
Czy ktoś mógłby skierować mnie tutaj we właściwym kierunku ... który z nich będzie działać?
Czy muszę też otwierać porty, aby działały, nawet jeśli są lokalne? Po uruchomieniu próbuję telnet 127.0.0.1 11211 i otrzymuję odmowę połączenia.
Odpowiedzi:
Krótka odpowiedź: albo jednego z nich szukasz, ale moim pierwszym wyborem będzie memcache (pierwszy wymieniony przez ciebie), oparty wyłącznie na jego prawidłowym zastosowaniu nomenklatury.
Oto jak doszedłem do tego wniosku:
Oto krótkie wprowadzenie w konwencje nazewnictwa (dla tych, którzy nie znają), co tłumaczy frustrację zadawaną przez pytającego: w przypadku wielu aplikacji * nix część wykonująca pracę backendu nazywa się „demonem” (w systemie Windows „usługą” land), podczas gdy interfejs lub aplikacja kliencka służy do kontrolowania demona lub uzyskiwania do niego dostępu. Demon jest najczęściej nazywany tak samo jak klient, z dołączoną literą „d”. Na przykład „imap” to klient, który łączy się z demonem „imapd”.
Ta konwencja nazewnictwa jest wyraźnie przestrzegana przez memcache, gdy czytasz wprowadzenie do modułu memcache (zauważ różnicę między memcache i memcached w tym fragmencie):
Frustracja jest spowodowana przez autora rozszerzenia PHP, które zostało źle nazwane memcached , ponieważ ma taką samą nazwę jak rzeczywisty demon o nazwie memcached . Zauważ też, że we wstępie do memcached (moduł php) wspomina o libmemcached , czyli bibliotece współdzielonej (lub API) używanej przez moduł do uzyskiwania dostępu do demona memcached:
Podsumowując, oba są funkcjonalnie takie same, ale mają po prostu różnych autorów, a jeden z nich jest po prostu bardziej odpowiednio nazwany niż drugi.
źródło
memcached
na przykład obsługuje tokeny cas,memcache
nie. Jeśli ich potrzebujesz, wiesz, które (źle nazwane lub nie) wybrać.Prawdopodobnie chcesz zobaczyć porównanie klienta PHP .
Krótka wersja: Oba będą działać, aw większości przypadków jedno z nich będzie w porządku.
Jeśli chodzi o drugi problem: Tak, powinieneś być w stanie to zrobić
telnet 127.0.0.1 11211
. Bardzo niewiele zapór blokowałoby komunikację hosta lokalnego z samym sobą. Jeśli nie możesz się połączyć, sprawdź, czy memcached naprawdę działaps auxwww | grep memcached
, co spowoduje także wyświetlenie argumentów wiersza poleceń używanych do uruchomienia memcached. Jednym z argumentów powinien być-p 11211
inny numer portu. Sprawdźman memcached
znaczenie wszystkich możliwych argumentów.źródło
ps auxwww | grep memcached
?Jak sugeruje link Nate'a, oba działają idealnie dobrze dla prostego użytkowania. Memcached obsługuje jednak więcej funkcji, które pozwalają uzyskać najlepszą wydajność memcached. Protokół binarny zmniejsza ilość danych wymaganych do wysłania między klientem a serwerem. Multigety i multisety umożliwiają uzyskanie / ustawienie wielu elementów jednocześnie. Jeśli okaże się, że potrzebujesz więcej pamięci poza memcache, lepszym modułem jest memcached. Zastosowanie libmemcached sugeruje, że sama biblioteka jest prawdopodobnie bardziej zoptymalizowana niż wersja tylko PHP.
Memcached to nowszy moduł w porównaniu do memcache, który został wydany zaledwie 8 miesięcy temu. Jeśli musisz celować w starszą wersję PHP, możesz naprawdę używać tylko memcache.
źródło
Nazywa się to starszym, cholernym,
php-memcache
ponieważ wydawało się to najbardziej odpowiednią nazwą. Nowsza, lepsza wersja opracowana niezależnie przez ludzi z Digg została nazwanaphp-memcached
w trosce o jednoznaczność.Ludzie, którzy poleciliby ci wybieranie jednego na drugim wyłącznie na podstawie poprawności nazwy, naprawdę nie mają działalności oferującej porady techniczne.
źródło
Korzystając ostatnio z php-memcache, muszę cię wskazać na php-memcached.
Oto kilka powodów z góry mojej głowy ...
1) Nie ma metody getErrorCode () ani równoważnej, więc jeśli get () zwróci FAŁSZ, nie będziesz miał pojęcia, czy dzieje się tak, ponieważ wartość przechowywana w memcache JEST fałszywa, czy też wystąpił jakiś problem.
2) Jego algorytm mieszania dla spójnego mieszania wydaje się różnić od innych implementacji, takich jak wiele bibliotek klienckich zbudowanych z libmemcached. Oznacza to, że jeśli chcesz używać tego samego klastra memcache z wieloma językami, prawdopodobnie będziesz mieć problemy z przechowywaniem wartości w kliencie PHP, a inni klienci go nie znajdą.
źródło
Oba mają problemy na dzień dzisiejszy. PECL / memcache jest stary i niezawodny, z kilkoma wyjątkami, gdy jest przestarzały. PECL / memcached 1.x jest w najlepszym razie wersją beta. Niektóre funkcje nie radzą sobie z klawiszami numerycznymi, przecieka połączenia podczas używania trwałych połączeń. Część (wszystko?) Jest naprawiana w GitHub i zostanie wydana w pewnym momencie w wersji 2.x, ale nie dzisiaj. Bardziej szczegółowa recenzja znajduje się na stronie http://brian.moonspot.net/php-memcached-issues
źródło
Pracuję nad książką „Expert PHP and MySQL”. O różnicach pisałem prawie to samo. To, co poleciłem, to PECL / memcached. # 1 - otacza w pełni funkcjonalną dobrze działającą bibliotekę C # 2 - jest ostatnio utrzymywana. # 3 - więcej funkcji. Brak dyskredytacji w stosunku do PECL / memcache.
źródło
Miałem kilka poważnych problemów z Drupalem 6 i php-pecl-memcached, w których czasy odpowiedzi były opóźnione nawet o 5 ms na połączenie i spowodowałyby, że jedna konkretna strona utworzyła 5 razy więcej połączeń niż przed zmianą na php-pecl-memcached . Zmiana na php-pecl-memcache naprawiła wszystkie problemy; opóźnienia i dodatkowe połączenia.
Ta odpowiedź ma na celu wyłącznie pomoc osobom używającym Drupala 6 i ewentualnie Drupala 7.
źródło
I są inni klienci dla memcached, patrz http://code.google.com/p/memcached/wiki/Clients
Wytnij i wklej z sieci:
http://www.php.net/manual/en/intro.memcache.php
http://www.php.net/manual/en/intro.memcached.php
http://pecl.php.net/package/memcached „Rozszerzenie PHP do współpracy z memcached przez bibliotekę libmemcached” To rozszerzenie używa biblioteki libmemcached do zapewnienia interfejsu API do komunikacji z serwerami memcached. https://github.com/andreiz/php-memcached
http://pecl.php.net/package/memcache „rozszerzenie memcached” Memcached to demon buforowania zaprojektowany specjalnie dla dynamicznych aplikacji internetowych w celu zmniejszenia obciążenia bazy danych poprzez przechowywanie obiektów w pamięci. To rozszerzenie pozwala na pracę z memcached przez poręczne OO i interfejsy proceduralne.
http://code.google.com/p/memcached/wiki/PHPClientComparison
źródło