Vraag memcache versus memcached?


Ik wil memcached gebruiken

http://www.danga.com/memcached/

Ik heb het geïnstalleerd yum install memcached

Maar nu moet ik een verbinding maken met PHP, en er is een extensie met de naam memcache en een met de naam memcached? ARGH

http://us3.php.net/manual/en/book.memcache.php
http://us3.php.net/manual/en/book.memcached.php

Kan iemand me hier in de juiste richting wijzen ... welke gaat er werken?

Ook, moet ik om het even welke havens openen voor het om te werken hoewel het lokaal is? Nadat ik het heb uitgevoerd, probeer ik telnet 127.0.0.1 11211 en krijg ik de verbinding geweigerd.


71
2017-09-08 15:27


oorsprong


Als u deze vraag nu bekijkt, houd er dan rekening mee dat het geaccepteerde antwoord is fout. Het kiezen van een oplossing die uitsluitend op de naam is gebaseerd, is gevaarlijk, vooral wanneer degene met de betere naam een ​​slechter project is. Zie de andere antwoorden voor meer informatie. - tylerl
@thanksyo vink het antwoord dat u heeft aangevinkt uit. Dat zal alleen maar meer mensen verwarren die hier laat komen. In de tussentijd heb ik het onjuiste antwoord getoetst en stelde ik voor dat anderen hetzelfde doen totdat thanksyo aan de beurt komt om het uit te schakelen. - joedevon
Ook stackoverflow.com/q/1442411/632951 - Pacerier


antwoorden:


Het korte antwoord: een van beide is wat je zoekt, maar mijn eerste keuze is memcache (de eerste die je hebt vermeld), puur gebaseerd op het correcte gebruik van de nomenclatuur.

Dit is hoe ik tot die conclusie kwam:

Hier is een korte achtergrond in conventies voor namen (voor onbekende gebruikers), wat de frustratie door de ask asker verklaart: voor veel * nix-toepassingen wordt het stuk dat het backend-werk doet een "daemon" genoemd (denk "service" in Windows- land), terwijl de interface of clienttoepassing is wat u gebruikt om de daemon te bedienen of toegang te krijgen. De daemon wordt meestal dezelfde naam gegeven als de client, met de letter "d" eraan toegevoegd. "Imap" zou bijvoorbeeld een client zijn die verbinding maakt met de "imapd" daemon.

Deze naamgevingsconventie wordt duidelijk nageleefd door memcache wanneer je de inleiding tot de memcache-module (let op het onderscheid tussen memcache en memcached in dit fragment):

Memcache-module biedt handig   procedureel en object georiënteerd   interface naar memcached, hoogst   effectieve caching daemon, wat was   speciaal ontworpen om te verminderen   database laden in dynamisch web   toepassingen.

De Memcache-module biedt ook een   sessie-handler (memcache).

Meer informatie over memcached kan   te vinden op »    http://www.danga.com/memcached/.

De frustratie hier wordt veroorzaakt door de auteur van de PHP-extensie die slecht werd genoemd memcached, omdat het dezelfde naam heeft als de feitelijke daemon die wordt gebeld memcached. Merk ook op dat in de inleiding tot memcached (de php-module), het maakt melding van libmemcached, wat de gedeelde bibliotheek (of API) is die door de module wordt gebruikt om toegang te krijgen tot de memcached daemon:

memcached is een high-performance,   objectcaching met gedistribueerd geheugen   systeem, generiek van aard, maar   bedoeld om te gebruiken bij het versnellen   dynamische webapplicaties van   het verminderen van de databasebelasting.

Deze extensie gebruikt libmemcached   bibliotheek om API voor te bieden   communiceren met memcached-servers.   Het biedt ook een sessie-afhandelaar   (Memcached).

Informatie over libmemcached kan zijn   gevonden bij "    http://tangent.org/552/libmemcached.html.

Samenvattend, beide zijn functioneel hetzelfde, maar ze hebben eenvoudigweg verschillende auteurs, en de ene wordt simpelweg beter genoemd dan de andere.


24
2017-09-08 16:16



Is de naam van het project echt een goede reden om de ene implementatie boven de andere te kiezen? - David Pashley
David: Niet helemaal ... maar het is zeker genoeg een reden om een ​​bepaalde implementatie achter te laten tot de laatste keer dat ik test, waardoor ik effectief de voorkeur geef aan de ander (en). Ik zou hoogstwaarschijnlijk nog steeds alle beschikbare implementaties proberen, maar technische tekortkomingen in beschrijvingen van software door de auteur doen me vragen over wat technische fouten in de software kunnen zijn. Ik heb wel je opmerking gelezen over de eigenlijke software, dus ik gaf je ook een reactie op je antwoord. :-) - Jessica McKinnon
Ik heb nooit gedacht dat de "d" in memcached deamon betekent, maar betekent het voltooid deelwoord van de werkwoordcache. Bovendien kon je de nieuwe interface niet als "memcache" noemen, omdat er al een was met die naam. - GetFree
Het aantal bugs en of de extensie actief wordt ontwikkeld is zo veel meer belangrijker dan anaal zijn over de problematiek d. Serieus, je zou er niet eens aan moeten denken om de ene extensie als laatste te testen vanwege zoiets, het is volledig vrij - Fake51
Eh, beide zijn niet functioneel hetzelfde: memcached ondersteunt casetokens bijvoorbeeld, memcache niet. Als je die nodig hebt, weet je welke (met of zonder naam) je moet kiezen. - Wrikken


Je wilt waarschijnlijk het PHP Client-vergelijking.

Korte versie: ze werken allebei, en in de meeste gevallen doet een van beide het prima.

Met betrekking tot het andere probleem: Ja, u zou moeten kunnen doen telnet 127.0.0.1 11211. Zeer weinig firewalls zouden localhost blokkeren om met zichzelf te communiceren. Als je geen verbinding kunt maken, controleer dan of die memcached echt werkt ps auxwww | grep memcached, die ook de opdrachtregelargumenten toont die worden gebruikt om memcached te starten. Een van de argumenten zou moeten zijn -p 11211 of een ander poortnummer. Zien man memcached voor de betekenis van alle mogelijke argumenten.


55
2017-09-08 16:08



Up-line voor het toevoegen van enkele stappen voor probleemoplossing. - Jessica McKinnon
Dit is echt het duidelijke antwoord. - danidacar
@ Nate, Wat is het Windows-equivalent van ps auxwww | grep memcached? - Pacerier
@Pacerier: Neem een ​​kijkje op superuser.com/questions/415360/.... Process Explorer is de gemakkelijkste manier om een ​​draaiend proces te vinden en de opdrachtregelargumenten te bekijken. - Nate
@Pacerier die opdracht controleren of het serverproces actief is en zien hoe het werd opgeroepen. - Jasen


Zoals de link van Nate suggereert, werken beide perfect voor eenvoudig gebruik. Memcached ondersteunt echter meer functies waarmee u de meeste prestaties uit memcached kunt halen. Het binaire protocol vermindert de hoeveelheid gegevens die moet worden verzonden tussen client en server. Met multigets en multisets kunt u meerdere items tegelijkertijd ontvangen / instellen. Als je merkt dat je meer geheugen nodig hebt, is memcached de betere module. Het gebruik van libmemcached suggereert dat de bibliotheek zelf mogelijk meer is geoptimaliseerd dan de alleen-versie van PHP.

Memcached is een meer recente module vergeleken met memcache, die pas 8 maanden geleden is uitgebracht. Als u een oudere versie van PHP wilt targeten, kunt u alleen echt memcache gebruiken.


27
2017-09-08 17:56



Geweldige uitleg! - john


De oudere, buggierige wordt genoemd php-memcache omdat dat de meest toepasselijke naam leek. De nieuwere, betere versie die onafhankelijk werd ontwikkeld door de mensen van Digg, werd in plaats daarvan genoemd php-memcached in het belang van disambiguation.

Mensen die zouden aanraden dat je de ene boven de andere kiest, alleen gebaseerd op de juistheid van de naam, hebben echt geen zaken die technisch advies bieden.


21
2017-08-24 04:15





Met betrekking tot deze vraag, hier is het juiste antwoord: http://about.digg.com/blog/new-pecl-extension-libmemcached-released


7
2017-08-24 01:17





Nadat ik onlangs php-memcache had gebruikt, zou ik je naar php-memcached moeten wijzen.

Hier zijn een paar redenen uit de top van mijn hoofd ..

1) Er is geen getErrorCode () of equivalente methode, dus als get () FALSE retourneert, hebt u geen idee of dat komt omdat de waarde die in memcache is opgeslagen, false is of dat er een probleem van een bepaalde soort is.

2) Het hashing-algoritme voor consistente hashing lijkt te verschillen van andere implementaties, zoals de vele clientbibliotheken die van libmemcached zijn gebouwd. Dit betekent dat als u dezelfde memcache-cluster met meerdere talen wilt gebruiken, u waarschijnlijk problemen ondervindt waarbij u een waarde opslaat met de PHP-client en andere clients deze niet vinden.


6
2017-11-09 21:08





Beide hebben problemen vanaf vandaag. PECL / memcache is oud en betrouwbaar, met een paar uitzonderingen waar het verouderd is. PECL / memcached 1.x is op zijn best bèta. Sommige functies hebben geen betrekking op numerieke toetsen, lekken verbindingen op bij gebruik van persistente verbindingen. Sommige (alle?) Worden gerepareerd in GitHub en worden op een gegeven moment in 2.x vrijgegeven, maar niet vandaag. Zie voor een meer gedetailleerde beoordeling http://brian.moonspot.net/php-memcached-issues


3
2018-06-24 17:26



PECL / memcached 1.x is nu stabiel; PECL / memcache 2.x is beperkt; PECL / memcache 3.x is zeer onstabiel. - aredridel


Ik werk aan een boek "Expert PHP en MySQL". Ik schreef vrijwel hetzelfde over de verschillen. Wat ik aanraadde was PECL / memcached. # 1 - het is verpakt in een goed functionerende C-bibliotheek # 2 - het is meer recentelijk onderhouden. # 3 - meer functies. Geen minachting voor PECL / memcache.


2
2017-12-02 15:21





Ik had een aantal behoorlijk ernstige problemen met Drupal 6 en php-pecl-memcached waarbij de responstijden met maximaal 5ms per gesprek werden vertraagd en ertoe zouden leiden dat een bepaalde site 5x meer oproepen zou maken dan vóór de wijziging in php-pecl-memcached . Het veranderen naar php-pecl-memcache loste alle problemen op; latentie en extra oproepen.

Dit antwoord is hier alleen om diegenen te helpen die Drupal 6 en mogelijk Drupal 7 gebruiken.


0
2017-09-05 19:24





  • memcache is een client van memcached (de server)
  • libmemcached is ook een client voor memcached

En er zijn andere clients voor memcached, zie http://code.google.com/p/memcached/wiki/Clients

Knippen en plakken vanaf internet:

http://www.php.net/manual/en/intro.memcache.php

  Memcache module provides handy procedural and object oriented 
  interface to memcached, highly effective caching daemon, which was 
  especially designed to decrease database load in dynamic web applications.
The Memcache module also provides a session handler (memcache).
More information about memcached can be found at » www.memcached.org 

http://www.php.net/manual/en/intro.memcached.php

   » memcached (http://www_memcached_org/) is a high-performance, distributed 
  memory object caching system, generic in nature, but intended for use in 
  speeding up dynamic web applications by alleviating database load.
  This extension uses libmemcached library to provide API for communicating with
  memcached servers. It also provides a session handler (memcached).
  Information about libmemcached can be found at 
   » tangent.org/552/libmemcached.html

http://pecl.php.net/package/memcached "PHP-extensie voor interfacing met memcached via libmemacached library"   Deze extensie gebruikt bibliotheken met libmemcached om API's te leveren voor communicatie met memcached-servers. https://github.com/andreiz/php-memcached

http://pecl.php.net/package/memcache "memcached extensie"   Memcached is een caching daemon die speciaal is ontworpen voor dynamische webtoepassingen om de databasebelasting te verminderen door objecten in het geheugen op te slaan. Met deze extensie kunt u werken met memcached via handige OO en procedurele interfaces.

http://code.google.com/p/memcached/wiki/PHPClientComparison

                        pecl/memcache      pecl/memcached
  First Release Date      2004-06-08         2009-01-29 (beta)
  Actively Developed?     Yes                    Yes
  External Dependency     None              libmemcached

-3
2017-12-03 06:16



Dit langdradige antwoord komt niet eens in de buurt van dingen duidelijk maken voor de poster. De poster is zich er al van bewust dat er meerdere klanten zijn. Het aanbieden van een lijst en het voorstellen van alternatieve namen maakt het niet gemakkelijker om de juiste te kiezen. - Martijn Heemels