2011-08-28 10 views
5

Aquí está el escenario: un sitio web simple que consulta una memoria caché memcached. Ese mismo caché se actualiza mediante un trabajo por lotes cada 10-15 minutos. Con ese patrón, ¿hay algo que pueda salir mal (por ejemplo, error de caché)?Memcached - ¿Las operaciones GET y SET son atómicas?

Me preocupan todas las posibles condiciones de carrera que podrían suceder. Por ejemplo, si el sitio web realiza una operación GET en un objeto almacenado en caché en memcached mientras ese mismo objeto es anulado por el trabajo por lotes, ¿qué sucederá?

Respuesta

6

Mi instinto inicial fue que deberías poder leer/escribir desde una memoria caché memcached sin efectos secundarios (que no sean la posibilidad de datos obsoletos debido a las condiciones de carrera).

El FAQ de memcached:

Está MemCached atómica? Aparte de cualquier error que pueda encontrar, sí, todos los comandos son atómicos internamente. La emisión de varios conjuntos al mismo tiempo no tiene ningún efecto negativo, aparte del último en ser el que se pega.

Sin saber más acerca de su situación específica, yo no sería capaz de asesorar sobre si es o no un error de caché era posible, pero lo hago hacer una generalización que el caché debe ser un primer nivel para la búsqueda de datos y no el ÚNICO nivel; Todavía tendría una base de datos u otra fuente detrás de la caché para manejar todas sus fallas de caché.

2

Aquí está el panorama: un sitio web sencillo que pregunta en una memoria caché de memcached. Ese mismo caché se actualiza mediante un trabajo por lotes cada 10-15 minutos. Con ese patrón, ¿hay algo que pueda salir mal (por ejemplo, error de caché)?

Tenga en cuenta que MemCached no garantiza que los datos almacenados en ella siempre se mantendrán en la memoria caché (por ejemplo , es una memoria caché, no es una base de datos). Si está utilizando memcached para otros datos, los resultados de esta consulta pueden ser desalojados de la memoria caché antes de que el trabajo por lotes los reinicie.

2

Si recibe datos, serán los últimos datos correctos que haya almacenado.

Usted nunca recibirá medio de una actualización, así que desde ese punto de vista, es atómica. Cada solicitud de una clave determinada devolverá todo o nada en absoluto para esa clave.

Cuestiones relacionadas