Blank white background with no objects or features visible.

EMEA, hallo! TrueFoundry breidt zijn aanwezigheid uit in Europa, het Midden-Oosten en Afrika. Lees meer. →

LiteLLM Caching: Redis, Semantic Cache en Wat Er Misgaat

DoorAbhilash Sanap

Bijgewerkt: November 10, 2026

Gepubliceerd: November 9, 2026

TL;DR

LiteLLM cache slaat LLM-antwoorden op, zodat herhaalde verzoeken de provider-call overslaan. Gebruik exact-match Redis in productie (lokale en schijfcaches werken per worker), bewaar semantic cache voor single-shot prompts en sluit agent-verkeer uit—multi-turn en tool-calling loops zijn de plekken waar het misgaat. Deze gids behandelt de configuratie, TTL, instellingen en de failure modes waar u rekening mee moet houden.

Wat LiteLLM cache inhoudt

Een LiteLLM cache slaat LLM-antwoorden op, zodat een later identiek (of, in de semantische modus, vergelijkbaar) verzoek de provider-call kan overslaan. Dat verlaagt de latency en provider-kosten wanneer het verkeer repetitief is—en veroorzaakt fouten in de juistheid van gegevens wanneer dat niet zo is. Dit artikel behandelt exact-match caches (in-memory, Redis/Valkey, S3/GCS, disk), semantische caches (Redis, Valkey, Qdrant), TTL en keys, vereisten voor meerdere replica's, invalidatie en de failure modes waar platform engineers in productie tegenaan lopen. Opmerking over de reikwijdte: dit betreft de response-cache van LiteLLM op applicatieniveau, niet de prompt-caching aan de provider-zijde van OpenAI/Anthropic (een afzonderlijke functie met een eigen configuratie). Caching is een van de diverse instellingen die een LLM gateway toepast op het verzoekpad, naast authenticatie, rate limits en routing.

Ondersteunde cache-backends in één oogopslag

De officiële proxy caching documentatie vermeldt: redis (ook Valkey/ElastiCache/Memorystore via het Redis-protocol), redis-semantic, valkey-semantic, qdrant-semantic, s3, gcs, local (in-memory) en disk. Redis is de juiste standaardkeuze zodra u meer dan één worker gebruikt. Exact-match caches maken een key op basis van een hash van het gehele verzoek. Semantische caches embedden de prompt en serveren de dichtstbijzijnde overeenkomst boven een gelijkenisdrempel—geschikt voor single-shot prompts en ongeschikt voor agentic verkeer.

Cache hit versus miss (exact-match)

Figuur 1. Exact-match flow: hash het verzoek, zoek op, hit retourneert of miss → provider → opslaan.

Bij een hit kunnen antwoorden een x-litellm-cache-key header bevatten, wat handig is voor debugging en voor /cache/delete. Met cache: True en geen ondersteunde supported_call_types override, is caching van toepassing op /chat/completions, /completions, /embeddings, /audio/transcriptions, /rerank, /v1/responses en /v1/messages (controleer dit in uw specifieke versie). Op /v1/responses maakt exact-match keys aan op basis van de request body—dus previous_response_id ten opzichte van een inlined conversatie levert verschillende keys op, en elke multi-turn stap is een eigen entry.

Caching inschakelen op de proxy

Minimale inschakeling (gebruikt standaard Redis wanneer inloggegevens aanwezig zijn):

Stel vervolgens REDIS_URL of REDIS_HOST / REDIS_PORT / REDIS_PASSWORD in, en bij voorkeur expliciet cache_params.type: redis. Debug met:

Een gezonde respons meldt cache_type, ping_response en redis client metadata. Gebruik dit in readiness checks voor multi-replica uitrol.

In-memory / lokaal versus Redis

Figuur 2. Lokale caches per worker fragmenteren hits; Redis deelt entries over workers/replica's.

Laptop / single-process:

Schijf: type: disk met optionele disk_cache_dir. Geen van beide wordt gedeeld tussen workers of replica's—volgens de documentatie moet u deze gebruiken voor lokale ontwikkeling, niet voor productie.

Productie-voorbeeld voor Redis met TTL:

Vier workers zonder Redis betekent ongeveer vier onafhankelijke caches—de hit-rate daalt met ongeveer het aantal workers. Configureer ook router_settings Redis voor gedeelde RPM/TPM, cooldowns en routing-status. "What Needs Redis" behandelt rate limits, budgetcoördinatie, cache-invalidatie en pod-locks. REDIS_HOST alleen, zonder YAML-verwijzingen, zal het delen niet inschakelen.

TTL, namespaces, keys en per-verzoek instellingen

ttl onder cache_params stelt de levensduur van de entry in seconden in. Per-verzoek cache-objectvelden: ttl, s-maxage (accepteer alleen entries jonger dan N seconden), no-cache (sla lezen over), no-store (sla schrijven over), namespace. Voeg dezelfde instellingen toe aan virtual-key metadata, zodat een bepaalde klasse verkeer zich kan afmelden zonder client-wijzigingen—een standaardpatroon voor agent-keys.

Beperk deelname met cache_params.supported_call_types (een lege lijst schakelt het uit). Standaard worden alleen standaard OpenAI-gevormde parameters opgenomen in de cache key; stel enable_caching_on_provider_specific_optional_params: True in als optionele velden in Vertex-stijl entries moeten onderscheiden. Er bestaan aangepaste get_cache_key-functies op het SDK Cache-object voor geavanceerde situaties—geef de voorkeur aan gedocumenteerde instellingen op de proxy voordat u aangepaste code gebruikt.

Semantic cache: wat is er nodig

Figuur 3. Semantic cache: embed prompt → cosinus-similarity vs drempelwaarde → hit of miss.

Een semantische cache embedt de prompt (inclusief berichten-tekst en systeemtekst) en serveert het dichtstbijzijnde gecachete antwoord waarvan de cosinus-similarity hoger is dan similarity_threshold. Backends: redis-semantic, valkey-semantic, qdrant-semantic. Configureer een embeddingmodel dat LiteLLM kan aanroepen—meestal een model_name uit de model_list. Hits kunnen x-litellm-semantic-similarity bevatten.

Voorbeeld van de structuur van Redis semantic:

Valkey semantic heeft de valkey-search module nodig (ElastiCache: op nodes gebaseerde Valkey 8.2+, cluster-mode-disabled wordt aanbevolen; Serverless en multi-shard cluster-mode-enabled worden vermeld als niet-ondersteund voor deze backend). Qdrant heeft een collectienaam nodig, een vectorgrootte die overeenkomt met de embedding-dimensionaliteit, en API-inloggegevens.

Embedding wordt inline uitgevoerd vóór de LLM. De standaard timeout is 5 seconden; daarna wordt de zoekopdracht afgebroken (similarity 0.0) en resulteert het verzoek in een miss. Stel semantic_cache_embedding_timeout of SEMANTIC_CACHE_EMBEDDING_TIMEOUT_SECONDS zorgvuldig in—een hogere deadline is ook de tijd die elk verzoek wacht wanneer embeddings blijven hangen.

semantic_cache_scope staat standaard op key (virtual key / team / org bucket). Stel in op end_user om te isoleren per geauthenticeerde eindgebruikers-ID (x-litellm-customer-id, geconfigureerde user_header_name, of request user). Anders kunnen vergelijkbare prompts op een gedeelde key antwoorden uitwisselen tussen eindgebruikers—inclusief tool-call payloads.

Exact-match versus semantic: bewust kiezen

Exact-match Redis is de veilige standaardkeuze voor de meeste platform-gateways: voorspelbare keys, geen embedding-afhankelijkheid in het kritieke pad en een natuurlijke juistheid voor multi-turn verkeer omdat elke berichtwijziging leidt tot een miss. Semantic cache is een optimalisatie voor hoog-volume, geparafraseerde, single-shot workloads waarbij u een benaderend hergebruik accepteert. Schakel de semantische modus niet in "omdat het slimmer klinkt" op een gedeelde gateway die ook agents bedient—splits het verkeer met virtual-key metadata of gescheiden gateways als de functionaliteit beide vereist.

Wanneer cache helpt versus wanneer het schaadt

Helpt:

  • Idempotente, repetitieve single-shot prompts (FAQ's, herhaalde classificatie-inputs, identieke ETL-prompts).
  • Herhaalde embedding van dezelfde corpus-shards.
  • Lagere provider-kosten en latency wanneer temperatuur en berichten stabiel zijn.
  • Exact-match Redis over meerdere gateway-replica's met gedeelde hit-rates.

Schaadt of is risicovol:

  • Niet-idempotente taken die de actuele status, tijd, prijzen of unieke bijwerkingen moeten weerspiegelen.
  • Streaming-gevoelige UX—verifieer het gedrag op uw versie; neem niet zonder tests aan dat gecachete antwoorden overeenkomen met live streaming-semantiek.
  • Tool-calling en agent-loops—vooral bij gebruik van semantic cache.
  • Creatieve generatie met een hoge temperatuur waarbij identieke prompts geen identieke tekst moeten opleveren.
  • Provider-passthrough routes (bijvoorbeeld /anthropic/v1/messages) die volgens de documentatie nooit via de cache lopen.

Semantic cache en multi-turn / agentic verkeer (wat er misgaat)

Figuur 4. Veelvoorkomende failure modes: agents + semantic cache, multi-worker zonder Redis, verlopen TTL, trage embeddings.

De officiële documentatie over semantic-caching is duidelijk: ontworpen voor single-shot prompts; bij multi-turn of agentic verkeer worden verouderde antwoorden opnieuw afgespeeld. Elke nieuwe beurt is de vorige tekst plus een kleine wijziging, waardoor embeddings ~0.99 vergelijkbaar blijven; bij praktische drempelwaarden komt elke beurt overeen met de vorige entry. Het verhogen van similarity_threshold lost dit niet betrouwbaar op. Assistant tool_calls maken geen deel uit van de ingebedde tekst, wat het nog moeilijker maakt om opeenvolgende agent-beurten van elkaar te onderscheiden—symptomen zijn onder meer agents die dezelfde tool-call blijven herhalen.

Oplossingen uit die documentatie: bewaar semantic caching voor single-shot verkeer; sluit agentic verkeer uit met key metadata cache.no-cache true, of mode default_off, of per-verzoek instellingen. Als agents toch caching nodig hebben, gebruik dan exact-match type: redis zodat elke conversatiewijziging netjes tot een miss leidt.

Invalidatie en observabiliteit

TTL is het grove middel. Namespaces scheiden omgevingen of tenants. no-store / no-cache onderdrukken schrijven/lezen. /cache/ping verifieert de backend. Bij hits kan x-litellm-cache-key gegevens leveren aan /cache/delete voor gerichte invalidatie—controleer de delete API op uw versie voordat u dit automatiseert. Success callbacks kunnen kwargs["cache_hit"] uitlezen voor metrics-pipelines. Houd de hit-rate, embedding latency (semantic), Redis-fouten (geen verbinding beschikbaar → verhoog max_connections) en de juistheid van antwoorden bij na configuratiewijzigingen.

Vereisten voor multi-replica Redis

Meer dan één worker-proces of replica ⇒ Redis (of compatibel) voor een coherente cache en voor gedeelde rate limits / router-status. Semantische backends hebben een gezonde vector store nodig op elk verzoekpad. Productie-documentatie gebruikt Redis ook voor de spend transaction buffer bij zeer hoge QPS (~1000+ RPS of 10+ instanties)—dit staat naast caching, maar heeft hetzelfde thema van gedeelde status. Optionele enable_redis_auth_cache spiegelt virtual-key authenticatie naar Redis zodat replica's auth-entries delen; combineer met general_settings.user_api_key_cache_ttl (standaard 60s) zodat intrekkingen synchroon lopen.

LiteLLM kan de coördinatie naar een andere Redis richten dan de response-cache via general_settings.coordination_redis. Als u ze scheidt, dimensioneer en monitor ze dan allebei. Als u één cluster behoudt, configureer dan nog steeds zowel router_settings als litellm_settings.cache_params—omgevingsvariabelen alleen koppelen niet elk subsysteem. Cluster/Sentinel/IAM-topologieën zijn gedocumenteerd op de Redis- en Valkey-pagina's. De cache client timeout per commando is cache_params.socket_timeout (standaard 5s), wat verschilt van REDIS_SOCKET_TIMEOUT.

Operationele checklist: wat er misgaat

  • Multi-worker zonder Redis → gefractioneerde caches en vermenigvuldigde RPM-limieten.
  • Semantic cache op coding agents → lussen van verouderde tool-calls.
  • Gedeelde virtual key + standaard semantic scope → lekken van vergelijkbare prompts tussen gebruikers.
  • Embedding-storing → tot timeout seconden extra latency per verzoek vóór een miss.
  • Te lange TTL op feitelijke inhoud → vol zelfvertrouwen foutieve gecachete antwoorden.
  • Alleen de cache Redis koppelen en router_settings overslaan → nog steeds zwakke gedeelde limieten.
  • Niet-idempotente prompts cachen → ongemerkt onjuist hergebruik.
  • Verwachten dat passthrough provider-routes de LiteLLM cache respecteren → ze kunnen deze omzeilen.
  • Aannemen dat een groene /cache/ping betekent dat semantische embeddings gezond zijn → test het embedding-pad afzonderlijk.
  • Wanneer Redis niet gezond is, lopen lokale caches uiteen en worden de limieten per worker ruimer—stel alerts in voor Redis-fouten naast de LLM latency.

Praktische aanbevelingen

Begin met exact-match Redis, een conservatieve TTL en caching die beperkt is tot bekende veilige call-types. Sluit agent virtual keys uit via metadata. Introduceer semantic cache alleen voor duidelijk single-shot workloads met een geteste similarity-drempelwaarde, embedding SLO's binnen het timeout-budget en een end_user scope als keys worden gedeeld. Load-test de hit-rate met uw werkelijke prompt-distributie—synthetische identieke grappen in demo's overschatten de besparingen. Baseer elke wijziging op /cache/ping, response headers en spend dashboards in plaats van op hoop. Combineer cache-metrics met LLM cost tracking zodat besparingen per team en model worden gemeten en niet zomaar worden aangenomen.

Gerelateerde artikelen

Conclusie

LiteLLM caching kan de latency en de provider-kosten aanzienlijk verlagen—wanneer het verkeer werkelijk repetitief is en de cache wordt gedeeld via Redis. Begin met exact-match Redis en een conservatieve TTL, beperk semantic caching tot single-shot workloads en houd agents buiten de deur.

Voor een gateway die caching samenbrengt met routing, rate limits en observabiliteit binnen uw eigen infrastructuur, ontdek hoe de AI Gateway van TrueFoundry dit aanpakt →

Probeer het nu.

Eén gateway voor al je modellen, MCP-servers en agents. Geen creditcard nodig.

Start gratis
Inhoudsopgave

Eén gateway voor elk LLM, elke agent en elke MCP-server

Boek een gesprek van 30 minuten met onze AI-expert

Demo aanvragen

De snelste manier om je AI te bouwen, beheren en schalen

Demo boeken
Samenvatten met
ChatGPT logo by OpenAI
Perplexity AI logo
Blurry red snowflake on white background, symmetrical frosty design with soft edges and abstract shape.

Ontdek meer

Geen items gevonden.
TrueFoundry offers scalable alternatives for Vercel AI Gateway limitations
November 10, 2026
|
5 min leestijd

Vercel AI Review 2026: Wij hebben het getest, zodat jij dat niet hoeft te doen

Geen items gevonden.
November 10, 2026
|
5 min leestijd

Vendor lock-in voorkomen met de AI Gateway van TrueFoundry

Geen items gevonden.
November 10, 2026
|
5 min leestijd

TrueFoundry en de MCP-gatewayrevolutie: inzichten uit het Gartner-rapport van 2025

Geen items gevonden.
November 10, 2026
|
5 min leestijd

Gids voor MCP-authenticatie in Claude Code 2026

Geen items gevonden.
Geen items gevonden.

Recente blogs

Black left pointing arrow symbol on white background, directional indicator.
Black left pointing arrow symbol on white background, directional indicator.

Veelgestelde vragen

What is LiteLLM cache and how does it work?

LiteLLM cache is the response cache built into the LiteLLM proxy and SDK: it stores LLM responses so a later identical request—or a similar one in semantic mode—skips the provider call. You enable it with litellm_settings.cache: true and choose a backend in cache_params (local, disk, redis, s3, gcs, or a semantic backend). It cuts latency and provider spend on repetitive traffic, and it is separate from provider-side prompt caching.

When should I use Redis versus the in-memory LiteLLM cache?

Use the in-memory (local) or disk cache only for local development or a single process, because neither is shared between workers or replicas. Use Redis—or a Redis-protocol service such as Valkey, ElastiCache, or Memorystore—as soon as you run more than one worker or pod. Four workers with local caches behave like four separate caches, and hit rates drop roughly by the worker count.

What breaks when you use semantic cache on multi-turn or agent traffic?

Semantic cache is designed for single-shot prompts; on multi-turn traffic it replays stale responses. Each new turn is the previous conversation plus a small delta, so embeddings stay around 0.99 similar, and assistant tool_calls are not part of the embedded text—agents end up repeating the same tool call. Raising similarity_threshold does not reliably fix it; exclude agent keys with "cache": {"no-cache": true} metadata or use exact-match type: redis.

What latency does the TrueFoundry AI Gateway add?

Roughly 3–4 ms of overhead, handling 350+ RPS on a single vCPU. That matters more as model calls get faster: a routing layer that adds hundreds of milliseconds would erase the advantage of a sub-second decision model.

‍

Integreert de TrueFoundry AI Gateway met mijn bestaande observability-stack?

Ja. De gateway is OpenTelemetry-compliant en sluit aan op Grafana, Datadog, Prometheus, of uw gewenste stack. Elk verzoek wordt getraceerd van prompt tot modeluitvoering, zodat metrics zoals latentie, kosten en fouten naast uw bestaande dashboards terechtkomen.

Volg een korte producttour
Start producttour
Product Tour