Memcache è più lungo la linea di una cache di oggetti distribuiti rispetto a qualcosa come APC o XCache, che memorizza il bytecode PHP in memoria in modo da evitare di doverlo analizzare ogni volta. I loro scopi principali sono diversi.
Ad esempio, se si è verificata una query di database a elevata intensità di CPU che le persone spesso richiedono, è possibile memorizzare nella cache l'oggetto risultante in memcache e quindi fare riferimento ad esso anziché eseguire nuovamente tale query per tutto il tempo.
APC & XCache ha funzionalità di caching degli oggetti simili, ma si è limitati al computer host. Cosa succede se si desidera che 10 server diversi abbiano accesso a quell'unico oggetto senza dover ripetere la query per ciascun server? Li diresti semplicemente al tuo server memcache e via. Hai ancora un vantaggio se hai un solo server, perché l'utilizzo di memcache ti aiuterà a scalare in futuro se hai bisogno di espandersi verso più caselle.
La cosa principale da considerare è se pensi che la tua app abbia bisogno di scalare. Memcache ha un sovraccarico in più perché devi usare una connessione TCP per accedervi, rispetto a una semplice chiamata per gli oggetti condivisi APC/Xcache.
Tuttavia, Memcache ha i seguenti vantaggi:
- Più veloce del disco o ri-esecuzione di query.
- Scala su più server.
- Funziona con molte lingue diverse, i tuoi oggetti non sono bloccati solo in PHP + APC/Xcache.
- Tutti i processi/lingue hanno accesso agli stessi oggetti, quindi non devi preoccuparti se i tuoi processi figlio PHP hanno una cache di oggetti vuota o meno. Questo potrebbe non essere un grosso problema se stai usando PHP-FPM.
Nella maggior parte dei casi, consiglierei di memorizzare nella cache gli oggetti in memcache poiché non è molto più difficile & è più flessibile per il futuro.
Ricordare che questo è solo relativo agli oggetti di memorizzazione nella cache. Memcache fa NON ha ha alcun bytecode o caratteristiche di accelerazione PHP, motivo per cui vorrei eseguirlo parallelamente con APC o Xcache
@SankalpSingha perché è ridicolo? Non dovrebbero essere usati allo stesso tempo? Voglio usare APC per il mio caching opcode e memcached per la mia archiviazione di sessione php. Non è una buona idea e perché? –
@SankalpSingha Risposta ridicola! Che ne dici di spiegare perché ... –