Una Tiered Cache, o caché por niveles, es un patrón de diseño donde los datos se almacenan en múltiples capas de caché, cada una con propiedades distintas en términos de latencia, capacidad, costo y volatilidad. Los niveles más cercanos al consumidor (o a la CPU) son típicamente más rápidos, más pequeños y más costosos (ej. L1/L2/L3 CPU caches, in-memory caches), mientras que los niveles más lejanos son más lentos, más grandes y más económicos (ej. SSD caches, distributed caches, CDN caches). La lógica de acceso a datos primero consulta el nivel más rápido y, si no encuentra el dato (cache miss), procede a consultar los niveles subsiguientes hasta encontrarlo o acceder a la fuente de datos original.

Este patrón se implementa ampliamente en diversos sistemas. A nivel de hardware, las CPU modernas utilizan Tiered Caches con niveles L1, L2 y L3. En sistemas operativos, el page cache es un ejemplo. A nivel de aplicación y distribuido, bases de datos como Redis (in-memory) y Memcached (distributed in-memory) a menudo se usan como niveles superiores, complementados por caches en SSD (ej. RocksDB en modo cache) o caches a nivel de CDN (ej. Cloudflare, Akamai) para contenido estático. Sistemas de almacenamiento distribuido como Ceph o HDFS pueden usar SSDs como un nivel de caché para datos calientes sobre HDDs.

Para un arquitecto, la Tiered Cache es fundamental para balancear rendimiento, costo y resiliencia. Permite optimizar la latencia de acceso a datos críticos al colocarlos en niveles rápidos, mientras se gestionan grandes volúmenes de datos en niveles más económicos. Las decisiones clave incluyen la elección de tecnologías para cada nivel, las políticas de coherencia entre niveles (ej. write-through, write-back, invalidation), las estrategias de desalojo (ej. LRU, LFU) y cómo manejar la consistencia de los datos en un entorno distribuido. Un diseño deficiente puede introducir complejidad, latencia adicional por cache misses en cascada o problemas de datos stale, mientras que un diseño óptimo puede reducir drásticamente la carga en la base de datos principal y mejorar la experiencia del usuario.