Curso exprés · No. 15
Una cache es un lugar pequeño y rápido donde guardas una respuesta que ya resolviste, para que la próxima vez que la necesites la leas en lugar de rehacer el trabajo. Es el mayor truco de velocidad de la informática — y viene con el problema difícil más famoso de la informática: saber cuándo la respuesta recordada se ha quedado obsoleta.
20 conceptos · un diagrama para cada uno · hoja de referencia al final
Una cache es una idea sencilla: guarda una copia de una respuesta en algún lugar rápido, para no pagar por producirla dos veces. Entiende esto y toda cache que conozcas será el mismo truco en un lugar distinto.
El mapa: 20 conceptos en siete grupos
Un mapa de metro: primero ves todas las líneas a la vez, luego recorres estación por estación.
Primero van tres básicos — qué es una cache, hit y miss, y por qué funciona. Luego seis grupos, uno por capítulo: las capas de cache, el hit ratio, la frescura, las estrategias para actualizar y desalojar, las trampas y cómo usarla bien.
Cada concepto siguiente tiene la misma forma: su nombre en inglés (apréndelo — es el término), una imagen de la vida cotidiana, un diagrama y una ficha con los campos problema, idea, ejemplo, coste, cuándo usarlo y relaciones.
Cache — una cache recuerda la respuesta
Un cuaderno de notas en tu escritorio junto a un archivador lento — una vez que has buscado algo, lo apuntas, y la próxima vez lees la nota en lugar de cruzar la sala otra vez.
Una cache es un almacén pequeño y rápido que guarda el resultado de un trabajo costoso — una consulta a la base de datos, una página calculada, un archivo descargado — para que la siguiente petición sea barata. Lo costoso ocurre una vez; la lectura barata, muchas veces. Ese es todo el principio. Lo demás son detalles sobre dónde vive el cuaderno y cuándo fiarse de lo que hay escrito.
- Problema
- El mismo trabajo costoso se hace una y otra vez.
- Idea
- Guardar el resultado en algún lugar rápido y leerlo de ahí.
- Ejemplo
Una página calculada, el resultado de una consulta a la base de datos, un archivo descargado — guardados en la cache.
- Coste
- Memoria para las copias, y el riesgo de que una copia quede obsoleta.
- Relaciones
El resto del curso trata de dónde viven las caches y cuándo fiarse de ellas.
Cache hit y cache miss — los dos resultados
Buscas la nota. O está ahí y la lees al instante — o está en blanco y, después de todo, tienes que ir al archivador.
Cuando la respuesta está en la cache, es un cache hit — rápido y barato. Cuando no está, es un cache miss — haces el trabajo lento y normalmente guardas el resultado para que la próxima vez sea un hit. Estas dos palabras describen toda interacción con una cache. El juego del caching consiste en convertir misses en hits.
- Qué es
- Un hit significa que la respuesta estaba en la cache. Un miss, que no.
- Cómo funciona
En un miss haces el trabajo lento y pones el resultado en la cache — así la próxima vez es un hit.
- Ejemplo
Primera visita a una página: un miss y una consulta a la base de datos. Segunda visita: un hit en milisegundos.
- Relaciones
La proporción de hits es el hit ratio, la nota principal de la cache.
Locality — funciona gracias a la repetición
Una cafetería que memoriza los pedidos de sus clientes habituales — compensa solo porque las mismas personas piden lo mismo una y otra vez.
El caching compensa cuando las mismas respuestas se necesitan repetidamente — y casi todo en la informática es repetitivo. Esta propiedad se llama locality (localidad): el acceso no es aleatorio, sino que se concentra en unos pocos elementos calientes. La misma página popular, el perfil del mismo usuario, la misma búsqueda, pedidos miles de veces. Así, una cache pequeña con los populares puede absorber una gran parte del trabajo. Sin repetición, no hay motivo para cachear.
- Qué es
- Los mismos datos se piden una y otra vez.
- Por qué importa
Una cache pequeña de elementos calientes atrapa una gran parte de las peticiones.
- Ejemplo
- Una página popular, el perfil del mismo usuario, la misma búsqueda.
- Pega
- Sin repetición — la cache casi no acierta y solo malgasta memoria.
- Relaciones
- La locality es lo que hace posible un hit ratio alto.
Una cache guarda una copia rápida de una respuesta costosa. Un hit es leer la nota; un miss es el paseo hasta el archivador. El trabajo es convertir misses en hits.
El caching no es una sola cosa en un solo lugar — es un patrón que se repite en cada capa entre un usuario y los datos. Cuanto más cerca está la copia de quien la necesita, más rápida es.
Cache Hierarchy — cuanto más cerca la cache, más rápido el hit
Suministros que guardas en tu escritorio, en la habitación, en el edificio y en un almacén al otro lado de la ciudad — cuanto más cerca, más rápido los consigues, pero menos cabe.
Hay una escalera de caches entre un usuario y la verdad — una cache hierarchy (jerarquía de caches): el navegador guarda archivos en tu dispositivo, una CDN guarda copias cerca de tu ciudad, la aplicación mantiene datos calientes en memoria y la CPU tiene caches diminutas a nanosegundos. Las caches más cercanas son más rápidas pero más pequeñas. Una petición prueba primero la más cercana y, si falla, sigue hacia fuera.
- Problema
- Una sola cache no puede ser cercana, rápida y grande a la vez.
- Idea
Una cadena de caches: la cercana, pequeña y rápida; la lejana, grande y más lenta.
- Ejemplo
- Navegador → CDN → cache de la app (Redis) → base de datos.
- Coste
- Más lugares donde puede esconderse una copia obsoleta.
- Relaciones
Las capas son la CDN, la cache en memoria y las caches de la CPU.
In-memory Cache (Redis) — el caballo de batalla
Un empleado que tiene los archivos más pedidos sobre el escritorio, al alcance de la mano, en lugar de ir a buscar cada uno al archivo del sótano cada vez.
La mayoría de las apps ponen una cache en memoria dedicada — una herramienta como Redis o Memcached — entre la aplicación y la base de datos. La memoria es muchísimo más rápida que el disco, así que guardar ahí los resultados calientes convierte una consulta lenta a la base de datos en una lectura casi instantánea. Cuando alguien dice "añade una cache" para acelerar un backend, normalmente se refiere a esto.
- Problema
Las consultas a la base de datos en disco son lentas, y las mismas se repiten.
- Idea
- Guardar los resultados calientes en la RAM, buscados por clave.
- Ejemplo
La clave
user:42guarda un perfil; la app lo lee de Redis en lugar de la base de datos.- Coste
Un servicio más; la memoria es limitada; las copias pueden quedar obsoletas.
- Cuándo usarlo
- Para acelerar un backend delante de una fuente de verdad lenta.
- Relaciones
- Suele llenarse con el patrón cache-aside.
CDN — la web cacheada cerca del usuario
Libros populares en bibliotecas locales de todas partes, para que nadie tenga que pedirlos por correo a un único archivo central.
Una CDN (content delivery network, red de entrega de contenido) es caching aplicado a la geografía: guarda copias de tus páginas, imágenes y archivos en servidores de todo el mundo (servidores edge), y sirve a cada usuario desde uno cercano. Por eso un sitio global carga rápido en todas partes y no solo cerca de su servidor de origen. Es la misma idea de hit/miss — la copia simplemente se reparte por el mapa para vencer la distancia.
- Problema
El servidor está en un solo país, así que los usuarios lejanos esperan por la distancia.
- Idea
- Guardar copias en servidores edge por todo el mundo.
- Ejemplo
Las imágenes de un sitio se sirven desde una ciudad cercana al usuario, no desde el origen.
- Coste
Las copias repartidas por el mundo también se quedan obsoletas; hace falta una forma de refrescarlas.
- Cuándo usarlo
Archivos estáticos, páginas y recursos para usuarios en muchos lugares.
- Relaciones
- Una de las capas de la cache hierarchy.
El caching es un patrón repetido en cada capa: navegador, CDN, almacén en memoria, CPU. Más cerca es más rápido pero más pequeño — y un miss cae hacia la siguiente capa.
Una cache solo vale su complejidad si de verdad atrapa la mayoría de las peticiones. Un número — el hit ratio — te dice si tu cache se gana el sueldo.
Hit Ratio — la nota que cuenta
A un portero se le juzga por la proporción de tiros que para. Uno que para el 95% lo cambia todo; uno que para el 10% apenas cambia el partido.
El hit ratio es la fracción de peticiones servidas desde la cache en lugar de la fuente lenta. Un hit ratio del 95% significa que solo una de cada veinte peticiones llega a la base de datos — una reducción enorme de carga y latencia. Un hit ratio del 10% significa que la cache es sobre todo sobrecarga. Este único número es como juzgas si una cache funciona.
- Qué es
hits ÷ (hits + misses) — la proporción de peticiones servidas desde la cache.
- Ejemplo
95% — 1 petición de cada 20 llega a la base de datos. 10% — la cache apenas ayuda.
- Por qué
La principal forma de saber si una cache funciona, y la principal palanca que se ajusta.
- Relaciones
Sube con la locality y un buen desalojo; baja con una cache fría y un TTL corto.
Cold y Warm Cache — una cache fría tiene que calentarse
Una tienda nueva con las estanterías vacías no sirve rápido a nadie al principio — se abastece según los clientes piden, hasta que los artículos populares están siempre a mano.
Justo después de arrancar, una cache está fría (cold) — vacía, así que cada petición es un miss y va a la fuente lenta. A medida que fluye el tráfico real, se llena de respuestas populares y se vuelve caliente (warm), y el hit ratio sube. Por eso el rendimiento puede verse mal justo después de un reinicio o un deploy, y luego se estabiliza. Algunos sistemas precalientan (pre-warm) la cache a propósito, cargando datos que se sabe que son calientes antes de que lleguen los usuarios.
- Qué es
- Fría — una cache vacía, todo es miss. Caliente — llena, y acierta.
- Ejemplo
Tras un deploy el sitio va lento unos minutos hasta que la cache se llena.
- Pega
Reiniciar todos los nodos a la vez manda toda la carga a la base de datos.
- Solución
Precalentar: cargar los datos calientes antes de que lleguen los usuarios.
- Relaciones
- Explica las caídas del hit ratio tras los reinicios.
Memory–Speed Trade-off — una cache cambia memoria por velocidad
Alquilar un escritorio más grande para que quepan más archivos al alcance de la mano — cuesta más espacio, pero vas mucho menos al archivador.
El caching no es gratis: gastas memoria, que es limitada y cuesta dinero, para ahorrar tiempo. Una cache más grande guarda más y acierta más a menudo, pero no puedes cachearlo todo — así que el arte está en cachear las cosas correctas: las respuestas calientes, caras y muy pedidas que dan más velocidad por byte guardado. Una cache es un trade-off deliberado.
- Idea
- Pagar con memoria para hacer menos viajes a la fuente lenta.
- Ejemplo
- Más RAM para Redis — caben más claves, más hits.
- Coste
- La memoria es limitada y cuesta dinero; no puedes cachearlo todo.
- Cuándo usarlo
- Cachea lo que da más velocidad por byte: lo caliente y lo caro.
- Relaciones
El hit ratio mide el beneficio; el desalojo libera el espacio.
El hit ratio es la libreta de notas de la cache. Gastas memoria para comprar velocidad — así que cachea las respuestas calientes y caras que ganan más hits por byte.
Una respuesta recordada puede quedar desfasada mientras sigues fiándote de ella. Saber cuándo dejar de fiarte de la copia es el problema central, y de verdad difícil, del caching.
Stale Data — el precio del caching
Ese número de teléfono que apuntaste en una nota adhesiva es oro — hasta que tu amigo se muda y la nota, en silencio, pasa a ser incorrecta.
La otra cara de recordar una respuesta es que la respuesta real puede cambiar mientras tu copia no. Un dato stale (obsoleto) es un valor cacheado que ya no coincide con la verdad — el precio viejo, la publicación borrada, el stock de hace una hora. Toda cache corre el riesgo de servir datos obsoletos, y decidir cuánta obsolescencia puedes tolerar es la primera pregunta de diseño real de cualquier cache.
- Qué es
- Un valor cacheado que ya no coincide con la fuente.
- Ejemplo
- El precio viejo, la publicación borrada, el stock de hace una hora.
- Por qué ocurre
- La verdad cambió; la copia no.
- Relaciones
Acotado por el TTL y la invalidación; cuánto es aceptable lo fija el staleness budget.
TTL — que caduque con un temporizador
Leche con fecha de caducidad — pasada esa fecha, no te fías sin comprobar, aunque todavía tenga buen aspecto.
La herramienta de frescura más simple es un TTL (time to live, tiempo de vida): cada entrada cacheada recibe una caducidad, y después de ella la entrada se considera eliminada, lo que obliga a traer datos frescos. Un TTL corto significa datos más frescos pero más misses; un TTL largo, más hits pero más obsolescencia. Elegir el TTL es elegir tu punto exacto en el equilibrio entre frescura y velocidad — por tipo de dato, según lo rápido que cambie de verdad.
- Problema
- Una copia puede quedar obsoleta y la cache no lo sabe.
- Idea
- Dar a cada entrada una hora de caducidad; pasada, volver a traerla.
- Ejemplo
Un tipo de cambio cacheado con un TTL de 60 segundos: nunca tiene más de un minuto.
- Coste
- Un TTL corto significa más misses; uno largo, más obsolescencia.
- Cuándo usarlo
Casi siempre, como red de seguridad base; ajústalo por tipo de dato.
- Relaciones
Una clave caliente que caduca para todos a la vez causa un cache stampede.
Cache Invalidation — por qué es famosamente difícil
Saber en el instante exacto en que un dato cambió en otro lugar del mundo, para romper tu nota en el momento justo — fácil de decir, enloquecedor de hacer.
Hay un chiste recurrente según el cual en informática solo hay dos problemas difíciles, y la cache invalidation (invalidación de cache) — saber cuándo hay que tirar un valor cacheado — es uno de ellos. Es difícil porque la cache a menudo no sabe que los datos de origen cambiaron; el cambio ocurrió en otro lugar. El siguiente capítulo reúne las estrategias que se usan contra este problema exacto.
- Problema
- Los datos cambiaron en otro lugar, y la cache no lo sabe.
- Idea
- Tirar o refrescar la copia cuando la verdad cambia.
- Ejemplo
- Tras un cambio de precio, borrar la clave del producto de la cache.
- Coste
Hay que encontrar todos los lugares donde vive la copia, sin olvidar ninguno.
- Relaciones
Estrategias: cache-aside, write-through, write-around; red de seguridad: TTL.
Toda respuesta cacheada puede quedar obsoleta. Un TTL la caduca con un temporizador — y saber exactamente cuándo invalidar es uno de los problemas realmente difíciles de la informática.
Dos fuerzas deciden qué hay en una cache y si es de fiar: cómo la actualizas cuando la verdad cambia, y cómo haces sitio cuando se llena. Ambas tienen estrategias con nombre que vale la pena conocer.
Cache-aside — la app llena la cache
Miras primero tu cuaderno; si está en blanco, vas al archivador, lees el expediente y apuntas la respuesta antes de seguir.
El patrón más común es el cache-aside (también llamado lazy loading, carga perezosa): al leer, la app consulta la cache; en un miss, trae el dato de la fuente, guarda el resultado y lo devuelve. La cache se llena bajo demanda con exactamente lo que de verdad se pide. Es simple y popular — y su punto débil es la obsolescencia, ya que un valor se queda en la cache hasta que algo lo caduca o lo invalida.
- Problema
- Necesitas llenar la cache sin saber de antemano qué se va a pedir.
- Idea
Lo hace la app: consulta la cache, en un miss lee la base de datos y pone el resultado en la cache.
- Ejemplo
GET user:42→ miss →SELECTa la base de datos →SET user:42con un TTL.- Coste
Un valor puede estar obsoleto hasta que se agote su TTL o alguien lo borre.
- Cuándo usarlo
Lo habitual en la mayoría de las caches delante de una base de datos.
- Relaciones
A menudo va con el TTL; en las escrituras se complementa con write-through.
Write-through y Write-around — mantener coherentes las escrituras
Cuando un dato cambia, puedes actualizar la nota del escritorio en el mismo momento que el expediente maestro — o saltarte la nota y dejar que se vuelva a traer fresca la próxima vez.
Cuando los datos se escriben, eliges cómo se mantiene al día la cache. Write-through actualiza la cache y la fuente a la vez, así la cache nunca queda obsoleta (a costa de escrituras más lentas). Write-around escribe solo en la fuente y deja que la cache falle y se recargue más tarde, evitando cachear datos que nadie vuelve a leer. Cuál elijas depende de tu mezcla de lecturas y escrituras.
- Problema
- En una escritura, la cache y la fuente se desincronizan.
- Idea
Write-through — actualizar cache y base de datos juntas. Write-around — escribir solo en la base de datos.
- Ejemplo
Un perfil que se vuelve a leer enseguida — write-through. Logs que casi nunca se leen — write-around.
- Coste
Write-through — escrituras más lentas. Write-around — un miss justo después de la escritura.
- Cuándo usarlo
- Según tu mezcla de lecturas y escrituras.
- Relaciones
Formas de hacer cache invalidation desde el lado de la escritura.
Eviction (LRU, LFU) — decidir qué quitar cuando está llena
Un escritorio pequeño y lleno — para añadir un expediente nuevo tienes que guardar uno, así que quitas el que llevas siglos sin tocar, no el que usas cada hora.
Una cache tiene espacio limitado, así que cuando se llena debe desalojar (evict) algo. La política más común es LRU (least recently used, el menos usado recientemente): quitar lo que lleva más tiempo sin tocarse, apostando a que no hará falta pronto. Existen otras — LFU (least frequently used) quita lo menos usado con frecuencia. El desalojo es cómo una cache pequeña conserva automáticamente los elementos calientes y suelta los fríos, sin crecer para siempre.
- Problema
- La cache se queda sin espacio, y siguen llegando datos nuevos.
- Idea
- Quitar lo que menos probablemente se necesite pronto.
- Ejemplo
LRU — quitar lo que lleva más tiempo sin tocarse. LFU — quitar lo menos usado.
- Coste
- A veces quita lo que está a punto de pedirse — un miss extra.
- Relaciones
Mantiene alto el hit ratio sin aumentar la memoria. No es lo mismo que la invalidación: esa trata de datos erróneos, el desalojo trata del espacio.
La invalidación decide cuándo un valor cacheado es incorrecto; el desalojo decide qué quitar cuando se acaba el espacio. Cache-aside, write-through, LRU — nombres para esos dos trabajos.
El poder del caching viene con filos cortantes. Los fallos clásicos no son exóticos — son predecibles, tienen nombre, y conocerlos es la mitad de evitarlos.
Cache Stampede — cuando caduca una clave caliente
Un artículo popular se agota, y en el instante en que ocurre, cien clientes corren al mostrador a pedirlo a la vez — desbordando al único empleado que repone.
Cuando caduca una entrada cacheada popular, todas las peticiones que la querían fallan en el mismo momento y golpean juntas la fuente lenta — un cache stampede (o thundering herd, estampida). La base de datos, protegida durante horas, recibe de golpe a toda la multitud y puede ceder. Las soluciones se conocen — dejar que una petición refresque mientras las demás esperan, o escalonar las caducidades — pero hay que anticiparlo: un stampede aparece justo cuando el tráfico es más alto.
- Problema
Una clave caliente caduca, y todas las peticiones fallan y golpean la base de datos a la vez.
- Ejemplo
La página de inicio caduca en el pico de tráfico — miles de peticiones la reconstruyen al mismo tiempo.
- Solución
Una petición refresca mientras las demás esperan; o dispersión aleatoria del TTL (jitter).
- Cuándo pensarlo
- Con toda clave caliente que tenga un TTL.
- Relaciones
- Un efecto secundario del TTL en datos populares.
Stale Reads — rápido, seguro de sí y equivocado
Leer un precio de una nota adhesiva vieja y citarlo con seguridad — el número llega al instante, y es el número equivocado.
Una cache sirve con gusto un valor obsoleto rápido y con total seguridad — una stale read (lectura obsoleta). Normalmente no pasa nada — un contador de visitas algo viejo no daña a nadie. Pero con datos donde la corrección es crítica — el saldo bancario, el inventario, los permisos — una lectura obsoleta puede ser un fallo real. La habilidad está en saber qué datos toleran la obsolescencia y cuáles deben estar siempre frescos, y no cachear sin cuidado los segundos.
- Problema
- La cache sirve un valor viejo, rápido y con seguridad.
- Inofensivo
- Un contador de visitas con un minuto de retraso.
- Un fallo real
- El saldo bancario, el inventario, los permisos.
- Solución
- Decidir de antemano qué datos toleran la obsolescencia y cuáles no.
- Relaciones
Cómo se manifiestan los stale data; se trata con un staleness budget.
What Not to Cache — algunas cosas no deberían cachearse nunca
No guardas una fotocopia de un documento que se reescribe cada minuto, ni de la carta privada de alguien en un escritorio compartido — la copia es incorrecta, o no debería estar ahí.
No todo pertenece a una cache. Los datos que cambian constantemente dan un hit ratio pobre y obsolescencia frecuente. Los datos sensibles o por usuario corren el riesgo de filtrarse si una cache compartida entrega la copia de un usuario a otro. Y los datos que casi nadie pide solo malgastan espacio. Saber qué no cachear es tan importante como saber qué cachear.
- Cambia rápido
- Hit ratio pobre y obsolescencia constante.
- Sensible
Los datos por usuario y secretos en una cache compartida pueden llegar al usuario equivocado.
- Poco pedido
- Casi nadie lo pide — solo ocupa espacio.
- Relaciones
- La otra cara del cache target.
Las mordeduras clásicas del caching tienen nombre: stampedes cuando caduca una clave caliente, stale reads servidas con falsa seguridad, y cachear cosas que nunca deberían estar ahí.
El caching es una herramienta potente: enorme velocidad por poca memoria, pagada con el riesgo de servir el pasado. Usado con intención, es uno de los mejores tratos de la informática.
Cache Target — cachear lo caliente, caro y de cambio lento
Memorizas los pedidos habituales de los clientes de siempre y las indicaciones que das diez veces al día — no las peticiones únicas ni lo que cambia por minutos.
El cache target ideal es lo que se lee con frecuencia, es caro de producir y rara vez cambia — esa combinación da la mayor velocidad con el menor riesgo de obsolescencia. Una página popular construida con una consulta lenta y recalculada idéntica todo el día es perfecta. Un valor que cambia constantemente, se lee poco y es sensible es lo contrario.
- Idea
- Se lee a menudo + es caro de producir + rara vez cambia.
- Ejemplo
Una página popular construida con una consulta lenta, idéntica todo el día.
- Contraejemplo
- Un valor que cambia constantemente, se lee poco y es sensible.
- Relaciones
- Lo contrario de what not to cache; da un hit ratio alto.
Staleness Budget — decídelo de antemano
Acordar de antemano cuánto desfase es aceptable — un widget del tiempo puede tener minutos de retraso; un saldo bancario no puede tener segundos.
Antes de cachear nada, decide cuánta obsolescencia tolera — ese es su staleness budget (presupuesto de obsolescencia). Esa decisión condiciona todo lo demás — el TTL, si necesitas invalidación activa, si es seguro cachearlo siquiera. Hazla explícita por tipo de dato. "¿Cuánto se le permite estar equivocado, y durante cuánto tiempo?" es la pregunta que convierte el caching de fuente de fallos misteriosos en un trato controlado y deliberado.
- Problema
Sin una decisión explícita, la obsolescencia aparece como fallos misteriosos.
- Idea
- Para cada tipo de dato, decidir de antemano cuán viejo puede ser.
- Ejemplo
El tiempo — unos minutos están bien. Un saldo bancario — ni un segundo.
- Qué fija
La duración del TTL, si necesitas invalidación, si cachear siquiera.
- Relaciones
La respuesta al riesgo de los stale data y las stale reads.
Cómo se conectan los conceptos
Dos platos de una balanza: velocidad en uno, frescura en el otro. Cada concepto de este curso mueve uno de ellos.
Todo el caching es un tira y afloja entre velocidad y frescura. A la izquierda, lo que sube el hit ratio: locality, una cache caliente, un desalojo sensato. A la derecha, lo que mantiene a raya los stale data: el staleness budget fija el TTL, y la invalidación tira lo que es incorrecto. Un TTL corto es más fresco pero acierta menos; en una clave caliente, el mismo TTL puede provocar un stampede.
- ¿Son calientes los datos — se piden con la repetición suficiente para dar un hit ratio real?
- ¿Son caros de producir, de modo que un hit ahorre de verdad un trabajo significativo?
- ¿Cuán obsoletos pueden estar — cuál es el TTL, y necesito invalidación activa?
- ¿Qué pasa cuando caduca una entrada caliente — podría causar un stampede?
- ¿Es seguro cachearlos — sin datos secretos por usuario en una cache compartida?
- ¿Cómo sabré que funciona — estoy midiendo el hit ratio?
- Puedes decir el hit ratio de tus caches importantes.
- Cada cosa cacheada tiene un TTL deliberado ajustado a lo rápido que cambia de verdad.
- Nada por usuario ni secreto está en una cache compartida por accidente.
- Tus claves calientes no harán un stampede contra la fuente de golpe al caducar.
- Cacheas las respuestas calientes, caras y de cambio lento — y dejas el resto.
Hoja de referencia: los 20 conceptos
Básicos
- Cacheel cuaderno
Una copia rápida de una respuesta costosa, para no hacer el trabajo dos veces.
- Cache hit / missencontrado / no encontrado
La respuesta estaba en la cache — o tuviste que ir a la fuente.
- Localityel conjunto caliente
Los mismos datos se piden una y otra vez — por eso funcionan las caches.
Capas
- Cache Hierarchycapas de caches
Navegador → CDN → memoria de la app → base de datos. Más cerca es más rápido, pero más pequeño.
- In-memory CacheRedis, Memcached
Datos calientes en RAM delante de una base de datos lenta.
- CDNred de entrega de contenido
Copias de archivos y páginas en servidores cercanos a los usuarios.
Hit ratio
- Hit Ratioproporción de hits
La proporción de peticiones servidas desde la cache. La nota principal de la cache.
- Cold / Warm Cacheprecalentamiento
Una cache vacía falla en todo; una llena acierta. El precalentamiento la carga por adelantado.
- Memory–Speed Trade-offmemoria por tiempo
Pagas en memoria, compras tiempo. Cachea lo que da más velocidad por byte.
Frescura
- Stale Datacopia desactualizada
La copia ya no coincide con la verdad.
- TTLtiempo de vida
La vida útil de una entrada; pasada, se vuelve a traer.
- Cache Invalidationtirar la copia
Tirar la copia cuando la verdad cambia. Famosamente difícil.
Estrategias
- Cache-asidelazy loading
La app consulta la cache, lee la base de datos en un miss y guarda el resultado.
- Write-through / Write-aroundpolíticas de escritura
Escribir en la cache y la base de datos juntas — o solo en la base de datos.
- Eviction (LRU / LFU)hacer sitio
Al llenarse, quitar la entrada que lleva más tiempo sin tocarse o la menos usada.
Trampas
- Cache Stampedethundering herd
Caduca una clave caliente — todos golpean la base de datos a la vez.
- Stale Readservir el pasado
Rápido, seguro de sí y equivocado. Peligroso con dinero, stock y permisos.
- What Not to Cachela lista de exclusión
Cambia rápido, sensible, poco pedido.
Usarlo bien
- Cache Targetqué cachear
Se lee a menudo, es caro de hacer, rara vez cambia.
- Staleness Budgetcuán viejo es aceptable
Decidir de antemano cuán viejos pueden ser los datos. Fija el TTL y la invalidación.
El caching cambia un poco de memoria por una enorme velocidad, con el riesgo de servir el pasado. Bien hecho, es deliberado: las respuestas correctas, con un staleness budget elegido a propósito.