2009-03-31 25 views
7

Soy nuevo en el uso de soluciones de almacenamiento en caché distribuidas como Memcached en un sitio web grande, tengo un par de preguntas y podría alguien que tenga experiencia en estos comentarios, por favor.Estrategias de almacenamiento en caché con Memcached?

  1. Obviamente, la cantidad de datos que puedo poner en la memoria caché depende de la memoria RAM del servidor. Supongamos que tengo una gran cantidad de servidores y RAM, ¿hay una cantidad máxima de objetos que puedo poner en memcached antes de comenzar a ver el rendimiento se degrada? La razón por la que pregunto es que me imagino que si pongo literalmente millones de objetos en memcached, ¿no tardaría más en indexar y buscar objetos? ¿Hay una línea para dibujar aquí?

  2. ¿Debo almacenar en caché objetos más pequeños pero más objetos en memcached, o más grandes pero con menos objetos? Los objetos más pequeños implican más viajes redondos a DB para obtenerlos, pero es más flexible y fácil de programar.

Muchas gracias,

Ray.

Respuesta

3

Supongo que tengo una gran cantidad de servidores y RAM, ¿hay una cantidad máxima de objetos que puedo poner en memcached antes de comenzar a ver el rendimiento se degrada?

Lo ideal es que su caché esté 100% llena en todo momento. memcached usa un algoritmo hash para buscar claves, por lo que yo sé, no debería haber una penalización de rendimiento para almacenar más claves.

¿Debo almacenar en caché objetos más pequeños pero más objetos en memcached, o más grandes pero con menos objetos?

Me imagino que los objetos más grandes, pero menos sería preferible reducir la cantidad de tiempo para ambas bases de datos y búsquedas de caché, pero usted debe tener esto sobre una base de caso por caso. A menos que sepa que la diferencia de rendimiento sería drástica, le recomendaría comenzar por lo más fácil primero y trabajar desde allí si eso no es suficiente.

+0

Gracias por su contribución. ¿Debo preferir tener menos viajes redondos, pero más uso de la memoria del servidor, más viajes redondos pero menos uso de la memoria del servidor? Generalmente hablando. –

+0

Lo pondré de esta manera: siempre puedes comprar memoria mucho más barato de lo que puedes comprar más ancho de banda. Así que preferiría menos viajes de ida y vuelta a menos que tuviera una buena razón para no hacerlo. –

+0

Si está pagando por el ancho de banda utilizado por memcached, entonces probablemente no debería usarlo. Dicho esto, menos viajes de ida y vuelta serán más rápidos simplemente debido a la latencia de la red, aunque la obtención múltiple también puede ayudar mucho en esto. –

4

Memcached utiliza un hash internamente para tener una búsqueda O (1), está diseñado para hacer el trabajo más simple posible.

En cuanto a qué almacenar en caché, grande o pequeño, se trata realmente de lo que necesita almacenar que le ahorrará esfuerzo (teniendo en cuenta que es un gran caché, debe mantener sincronizado si cambia una pieza eso también se menciona en otro lugar). En el sitio original fue escrito para, Livejournal.com, el bloque más grande que tenía sentido era una entrada de diario completa, como el HTML terminado que podría ser utilizado por cualquier persona a la que se le permitiera ver esa publicación en particular.

Lo he usado para algunas entradas muy pequeñas, literalmente un único número contra un ID de miembro, pero estoy generando unos miles de entradas de este tipo en masa con una sola consulta de base de datos en lugar de uno a la vez. necesario.

Puede optimizar el daemon si sabe que solo almacenará elementos muy grandes o muy pequeños, pero para las muchas entradas pequeñas, tiene suficiente inteligencia para dividir las losas de memoria grandes en trozos más pequeños para usar .

+0

¿Cuánto tiempo guarda en caché, por ejemplo, para su objeto Usuario? ¿Debo almacenar en caché como 30 segundos o 2 minutos? –

+0

¿Con qué frecuencia cambian los datos? Si cambiará a menudo, pero no se usará con frecuencia, es posible que no obtenga un gran beneficio al almacenarlo en caché. Si rara vez cambia, puede almacenarlo en caché durante semanas, pero luego eliminarlo de la memoria caché cuando se modifique, para volver a leerlo. PS votar respuestas útiles. –

Cuestiones relacionadas