Quando memcached ha bisogno di memorizzare nuovi dati nella memoria, e la memoria è già piena, cosa succede è questo:
- ricerche memcached per AA adatto ingresso * scaduta, e se uno viene trovato, sostituisce i dati in quella voce. Che risponde punto 3) i dati non viene rimosso immediatamente, ma quando devono essere impostati nuovi dati, lo spazio è riassegnato
- se non viene trovata alcuna voce scaduto, quello che viene utilizzato meno di recente è sostituito
* Tenete guarda come memcached si occupa della memoria: assegna blocchi di dimensioni diverse, quindi la dimensione dei dati che andrai a impostare nella cache gioca un ruolo nel decidere quale voce viene rimossa. Le voci sono 2K, 4K, 8K, 16K ... ecc. Fino a 1M di dimensione.
Tutte queste informazioni possono essere trovate in the documentation, quindi basta leggere attentamente. Come dice @deceze, memcached non garantisce che i dati saranno disponibili in memoria e devi essere preparato per una tempesta di miss cache. Un approccio interessante per evitare una tempesta miss è quello di impostare il tempo di scadenza con un offset casuale, ad esempio 10 + [0..10] minuti, il che significa che alcuni elementi verranno memorizzati per 10 e altri per 20 minuti (l'obiettivo è che non tutti gli articoli scadono allo stesso tempo).
E se si desidera conservare qualcosa nella cache, è necessario fare due cose:
- uno script warm-up, che chiede di cache per caricare i dati.Quindi è sempre usato di recente
- 2 tempi di scadenza per l'articolo: una vera e propria scadenza, diciamo in 30 minuti; un altro - memorizzato nella cache insieme all'elemento - tempo logico di scadenza, diciamo tra 10 minuti. Quando si recuperano i dati dalla cache, si controlla la scadenza logica e se è scaduta: ricaricare i dati e impostarli nella cache per altri 30 minuti. In questo modo non colpirai mai il tempo di scadenza della cache reale e i dati verranno periodicamente aggiornati.
5) Qual è il significato di opzione -k in "memcached.conf". Non sono in grado di capire cosa significa "Blocca tutta la memoria di paging". Anche la descrizione di in README non è sufficiente.
Indipendentemente dalla quantità di memoria allocata per memcached, utilizzerà solo l'importo necessario, ad es. assegna solo la memoria effettivamente utilizzata. Con l'opzione -k
tuttavia, l'intera memoria è riservata all'avvio della memcached, quindi assegna sempre l'intera quantità di memoria, non importa se ne ha bisogno o no
fonte
2012-06-27 10:15:33
LRU sta per Least Recently Used ... if the memcache wiki Detto questo, suppongo che sia il caso, a meno che tu non abbia delle prove da suggerire altrimenti –
Ad essere onesti, sembra che tu stia pensando troppo o come memcached non sia quello che vuoi. memchached è una * cache * con lo scopo di rendere rapidamente disponibili i dati utilizzati più spesso, che altrimenti richiederebbero un po 'di tempo per essere caricati. Non garantisce assolutamente che questi dati saranno disponibili ogni volta, o per quanto tempo, o per nulla. Non è un archivio dati primario. Tutto ciò che fa è * forse * accelerare il recupero dei dati a volte, punto. Non puoi mai presumere che alcuni dati saranno nella cache, periodo. Questa è la natura del caching. – deceze
http://en.wikipedia.org/wiki/Cache_algorithms#Least_Recently_Used: l'hai letto? –