Si se trata de datos que no necesariamente necesitan para actualizarse en tiempo real, y para mí el recuento de vistas es uno de ellos, entonces podría agregar un campo de caducidad a los objetos que están almacenados en Memcache .
Una vez que caduque, volverá a la base de datos y leerá el nuevo valor, pero hasta entonces lo dejará en paz.
Por supuesto, para las publicaciones nuevas es posible que desee actualizar esto más a menudo, pero puede codificar para esto.
Memcache solo almacena una copia de su objeto en una de sus instancias, no en muchas de ellas, así que no me preocuparía el bloqueo de objetos ni nada. Eso es para que la maneje la base de datos, no tu caché.
Editar:
Memcache no ofrece ninguna garantía de que cuando se está recibiendo y el establecimiento de diversos servidores que sus datos no se consiguen Demolí.
a partir de documentos memcache:
- Una serie de comandos no es atómica. Si emite un 'get' contra un elemento, opera en los datos, luego desea 'configurar' de nuevo en memcached, no se garantiza que sea el único proceso que trabaja con ese valor. En paralelo, podría terminar sobrescribiendo un valor establecido por otra cosa.
Las condiciones de carrera y datos obsoletos
Una cosa a tener en cuenta al diseñar su aplicación a los datos de la caché, es cómo hacer frente a las condiciones de carrera y datos obsoletos ocasionales.
Digamos que almacena en caché los últimos cinco comentarios para mostrar en una barra lateral en su aplicación. Usted decide que los datos solo necesitan actualizarse una vez por minuto. ¡Sin embargo, olvidas recordar que esta pantalla de la barra lateral se renderiza 50 veces por segundo! Por lo tanto, una vez que transcurren 60 segundos y el caché expira, de repente más de 10 procesos están ejecutando la misma consulta SQL para volver a llenar ese caché. Cada vez que caché, se producirá una explosión repentina de tráfico SQL.
Peor aún, tiene múltiples procesos actualizando los mismos datos, y el incorrecto termina saliendo con la caché. Entonces tienes datos desactualizados y obsoletos flotando.
Uno debe tener en cuenta los posibles problemas al completar o repoblar nuestro caché. Recuerde que el proceso de comprobación de memcached, búsqueda de SQL y almacenamiento en memcached, ¡no es atómico en absoluto!
El problema es que nos gustaría que el recuento de vistas (en este caso, pero hay otras situaciones con el mismo problema) se actualice en vivo: haga clic en la publicación y aumente la cantidad de reproducciones. También nos gustaría que el objeto de caché viva el mayor tiempo posible, por razones de rendimiento, por supuesto. – Micael
No puede garantizar lo que intenta hacer de la manera que desea hacerlo. Lo que Memcache le da es escalabilidad, no rendimiento en bruto. Es cierto, pero – Nathan