Fiabilidad · Media · 15 min

Una caché LRU para respuestas del modelo

Si dos usuarios hacen la misma pregunta, no hace falta volver a generar. Guarda las últimas respuestas y descarta las menos usadas.

Escribe la clase LRUCache con new LRUCache(capacity), get(key), set(key, value) y la propiedad size.

get devuelve undefined si la clave no está y, si está, la marca como usada recientemente. set añade o actualiza un valor y también lo marca como reciente. Cuando se supera capacity, elimina la entrada usada hace más tiempo.

Pista de diseño: un Map recuerda el orden de inserción.

Retos 0/4

  • Guarda y recupera valores
  • Al superar la capacidad elimina la más antigua
  • get marca la entrada como reciente
  • Actualizar una clave no aumenta el tamaño y la refresca

class LRUCache {
  constructor(capacity) {
    this.capacity = capacity;
    this.map = new Map();
  }
  get(key) {
    return this.map.get(key);
  }
  set(key, value) {
    // marca la clave como reciente y expulsa la más antigua si se supera la capacidad
    this.map.set(key, value);
  }
  get size() {
    return this.map.size;
  }
}

const cache = new LRUCache(2);
cache.set('¿Qué es GGUF?', 'Un formato de modelo');
cache.set('¿Qué es Ollama?', 'Un servidor local');
cache.set('¿Qué es vLLM?', 'Otro servidor');
console.log(cache.size, cache.get('¿Qué es GGUF?'));
La consola aparece aquí (console.log).

Para profundizar: la referencia de MDN (en inglés) →

¿Esto en producción, con tus datos? Hablemos 15 minutos →