---
title: "Caching | Grafana Loki documentation"
description: "Enable and configure memcached for caching."
---

> For a curated documentation index, see [llms.txt](/llms.txt). For the complete documentation index, see [llms-full.txt](/llms-full.txt).

# Caching

Loki supports caching of index writes and lookups, chunks and query results to speed up query performance. This sections describes the recommended Memcached configuration to enable caching for chunks and query results. The index lookup cache is configured to be in-memory by default.

## Before you begin

- It is recommended to deploy three, or in the case of the Helm chart two, dedicated Memcached clusters.
- As of 2023-02-01, the `memcached:1.6.17-alpine` version of the library is recommended.
- Consult the Loki ksonnet [memcached](https://github.com/grafana/loki/blob/main/production/ksonnet/loki/memcached.libsonnet) deployment and the ksonnet [memcached library](https://github.com/grafana/jsonnet-libs/tree/master/memcached).

## Steps

To enable and configure Memcached:

1. Deploy each Memcached service with at least three replicas and configure each as follows:
   
   1. Chunk cache
      
      ![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy
      
      ```none
      --memory-limit=4096 --max-item-size=2m --conn-limit=1024
      ```
   2. Query result and index queries cache
      
      ![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy
      
      ```none
      --memory-limit=1024 --max-item-size=5m --conn-limit=1024
      ```
2. Configure Loki to use the cache.
   
   1. If the Helm chart is used
      
      Set `memcached.chunk_cache.host` to the Memcached address for the chunk cache, `memcached.results_cache.host` to the Memcached address for the query result cache, `memcached.chunk_cache.enabled=true` and `memcached.results_cache.enabled=true`.
      
      Ensure that the connection limit of Memcached is at least `number_of_clients * max_idle_conns`.
      
      The options `host` and `service` depend on the type of installation. For example, using the `bitnami/memcached` Helm Charts with the following commands, the `service` values are always `memcached`.
      
      ![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy
      
      ```none
      helm upgrade --install chunk-cache -n loki bitnami/memcached -f memcached-overrides-chunk.yaml
      helm upgrade --install results-cache -n loki bitnami/memcached -f memcached-overrides-results.yaml
      ```
      
      The current Helm Chart only supports the chunk and results cache.
      
      In this case, the Loki configuration would be
      
      YAML ![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy
      
      ```yaml
      loki:
        memcached:
          chunk_cache:
            enabled: true
            host: chunk-cache-memcached.loki.svc
            service: memcached-client
            batch_size: 256
            parallelism: 10
          results_cache:
            enabled: true
            host: results-cache-memcached.loki.svc
            service: memcached-client
            default_validity: 12h
      ```
   2. If the Loki configuration is used, modify the following three sections in the Loki configuration file.
      
      1. Configure the chunk and index write cache
         
         YAML ![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy
         
         ```yaml
         chunk_store_config:
           chunk_cache_config:
             memcached:
               batch_size: 256
               parallelism: 10
             memcached_client:
               host: <chunk cache memcached host>
               service: <port name of memcached service>
         ```
      2. Configure the query result cache
         
         YAML ![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy
         
         ```yaml
         query_range:
           cache_results: true
           results_cache:
             cache:
               memcached_client:
                 consistent_hash: true
                 host: <memcached host>
                 service: <port name of memcached service>
                 max_idle_conns: 16
                 timeout: 500ms
                 update_interval: 1m
         ```
      3. Configure the index queries cache
         
         YAML ![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy
         
         ```yaml
         storage_config:
           index_queries_cache_config:
             memcached:
               batch_size: 100
               parallelism: 100
             memcached_client:
               host: <memcached host>
               service: <port name of memcached service>
               consistent_hash: true
         ```
