2009-12-20 14 views
7

Sto usando memcache per l'archiviazione di oggetti, ma vorrei aggiungere anche un acceleratore di codice operativo come APC. Dal momento che entrambi implicano il caching, non sono sicuro che si "calpesteranno l'un l'altro", cioè non sono sicuro che memcache sia già un acceleratore di codice OP.Posso usare APC E memcached sullo stesso server?

Qualcuno può chiarire? Mi piacerebbe usarli entrambi - bit per cose diverse. memcache per l'archiviazione in cache dei miei oggetti e APC per l'accelerazione del codice

risposta

4

sì, è possibile utilizzarli entrambi contemporaneamente.

+0

@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é? –

+0

@SankalpSingha Risposta ridicola! Che ne dici di spiegare perché ... –

19

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

+0

"Hai ancora un vantaggio se hai un solo server, perché l'uso di memcache ti aiuterà a scalare in futuro se hai bisogno di diramarti verso più caselle." - quindi non ci sono vantaggi su un singolo server? – nickf

+0

@nickf, ha aggiunto più dettagli alla mia risposta. – Klinky

+2

+1. Un altro punto da aggiungere: APC non gestisce la concorrenza elevata così come fa memcached.Usiamo memcached e APC in produzione, per archiviare i dati delle applicazioni appropriate, e stiamo pensando di iniziare a usare Redis (per la persistenza e le operazioni di lista). A livelli elevati di concorrenza, ognuno è bravo in certe cose che gli altri non sono. –

Problemi correlati