Cuando memcached necesita almacenar nuevos datos en la memoria, y la memoria ya está llena, lo que sucede es lo siguiente:
- búsquedas memcached para aa entrada terminado * conveniente, y si se encuentra uno, reemplaza los datos en esa entrada. El cual responde el punto 3) los datos no se elimina inmediatamente, pero cuando se deben establecer nuevos datos, el espacio se reasigna
- si no se encuentra ninguna entrada terminado, el que se utiliza menos recientemente se sustituye
* Tenga en Tenga en cuenta cómo la memcached se ocupa de la memoria: asigna bloques de diferentes tamaños, por lo que el tamaño de los datos que va a establecer en la memoria caché desempeña un papel en la decisión de qué entrada se elimina. Las entradas son 2K, 4K, 8K, 16K ... etc. hasta 1M de tamaño.
Toda esta información se puede encontrar en in the documentation, así que simplemente lea detenidamente. Como dice @deceze, memcached no garantiza que los datos estén disponibles en la memoria y debes estar preparado para una tormenta de caché. Un enfoque interesante para evitar una tormenta fallida es establecer el tiempo de expiración con un desplazamiento aleatorio, digamos 10 + [0..10] minutos, lo que significa que algunos elementos se almacenarán por 10 y otros por 20 minutos (el objetivo es que no todos los artículos caducan al mismo tiempo).
Y si desea conservar algo en la memoria caché, que tiene que hacer dos cosas:
- un guión de calentamiento, que pide caché para cargar los datos.Por lo tanto, siempre se ha utilizado recientemente
- 2 tiempos de caducidad para el artículo: un tiempo de caducidad real, digamos en 30 minutos; otro, en caché junto con el elemento - tiempo de vencimiento lógico, digamos en 10 minutos. Cuando recupera los datos del caché, verifica el tiempo de vencimiento lógico y, si está caducado, vuelva a cargar los datos y configúrelos en el caché durante otros 30 minutos. De esta forma, nunca alcanzará el tiempo de caducidad del caché real, y los datos se actualizarán periódicamente.
5) ¿Cuál es el significado de la opción -k en "memcached.conf". No soy capaz de entender qué significa "Bloquear toda la memoria paginada". También la descripción en README tampoco es suficiente.
No importa la cantidad de memoria que asigne a memcached, solo usará la cantidad que necesita, p. Ej. asigna solo la memoria realmente utilizada. Sin embargo, con la opción -k
, toda la memoria está reservada cuando se inicia memcached, por lo que siempre asigna la cantidad total de memoria, no importa si la necesita o no
LRU significa Uso menos reciente ... si la wiki de Memcache dice eso, entonces asumiría que es el caso a menos que tengas evidencia que sugiera lo contrario –
Para ser honesto, parece que estás pensando demasiado o que memcached no es lo que quieres. memchached es un * caché * con el propósito de hacer que los datos de uso frecuente estén disponibles rápidamente, lo que de lo contrario puede llevar un tiempo cargar. No garantiza absolutamente que estos datos estén disponibles todo el tiempo, o por cuánto tiempo, o en absoluto. No es un almacén de datos primario. Todo lo que hace es * quizás * acelerar la recuperación de datos a veces, punto. Nunca se puede asumir que ciertos datos estarán en el caché, punto. Esa es la naturaleza del almacenamiento en caché. – deceze
http://en.wikipedia.org/wiki/Cache_algorithms#Least_Recently_Used - ¿Has leído eso? –