# Caffeine Cache

O **Caffeine Cache** usa a [biblioteca Caffeine](https://github.com/ben-manes/caffeine) para armazenar dados na memória, garantindo acesso rápido. Ele ajuda a reduzir consultas ao banco de dados e acelera aplicações ao gerenciar automaticamente os dados armazenados com regras inteligentes de expiração e remoção. É ideal para armazenar respostas de APIs, resultados de consultas a bancos de dados e dados frequentemente utilizados.

{% hint style="warning" %}
Este conector usa a memória do pipeline. Se não for gerenciado corretamente, pode causar [erros de “Out of Memory”](/documentation/troubleshooting/pt-br/common-issues/common-pipeline-issues.md#out-of-memory-oom).
{% endhint %}

## **Parâmetros**

Dê uma olhada nos parâmetros de configuração do conector. Parâmetros suportados por [expressões Double Braces](/documentation/connectors-and-triggers/pt-br/double-braces/overview.md) estão marcados com `(DB)`.

### **Aba General**

<table data-full-width="true"><thead><tr><th>Parâmetro</th><th>Descrição</th><th>Valor padrão</th><th>Tipo de dado</th></tr></thead><tbody><tr><td><strong>Cache Name</strong> <code>(DB)</code></td><td>Define o nome do cache.</td><td>N/A</td><td>String</td></tr><tr><td><strong>Action</strong></td><td>Especifica a ação padrão do cache. Opções: <code>Get</code>, <code>Put</code>.</td><td>N/A</td><td>String</td></tr><tr><td><strong>Key</strong> <code>(DB)</code></td><td>Define a chave usada para identificar os dados no cache. Usado nas ações <code>Get</code> e <code>Put</code>.</td><td>N/A</td><td>String</td></tr><tr><td><strong>Raw Mode</strong></td><td>Quando ativado, o parâmetro <strong>Value</strong> será substituído por <strong>Body</strong>. Usado em ações <code>Put</code>.</td><td>False</td><td>Booleano</td></tr><tr><td><strong>Body</strong> <code>(DB)</code></td><td>Define os dados associados à chave especificada. Esse campo suporta múltiplos valores e é usado em ações <code>Put</code>.</td><td><code>{ }</code></td><td>JSON</td></tr><tr><td><strong>Value</strong> <code>(DB)</code></td><td>Define os dados associados à chave especificada. Permite apenas um valor e é usado em ações <code>Put</code> quando <strong>Raw Mode</strong> está desativado.</td><td>N/A</td><td>String</td></tr><tr><td><strong>Eviction Type</strong></td><td>Determina como o cache remove entradas. Opções: <code>size_based</code>, <code>time_based</code>.</td><td><code>size_based</code></td><td>String</td></tr><tr><td><strong>Initial Capacity (quando <code>size_based</code> é selecionado)</strong></td><td>Define o tamanho inicial das estruturas de dados internas. Isso não limita o tamanho máximo do cache, mas ajuda a otimizar o desempenho. Se não especificado, a capacidade inicial padrão é <code>16</code>. Quando fornecido, o valor especificado substituirá o padrão.</td><td><code>0</code></td><td>Inteiro</td></tr><tr><td><strong>Maximum Size (quando <code>size_based</code> é selecionado)</strong></td><td>Define o número máximo de entradas que o cache pode armazenar, medido em quantidade e não em bytes. O cache pode começar a remover entradas antes de atingir esse limite ou ultrapassá-lo brevemente durante a remoção. Definir este valor como <code>0</code> desativa o cache, removendo as entradas imediatamente após serem carregadas.</td><td><code>0</code></td><td>Inteiro</td></tr><tr><td><strong>Expire After Access Time (s) (quando <code>time_based</code> é selecionado)</strong></td><td>Define o tempo de expiração após os dados serem acessados, em segundos.</td><td><code>300</code></td><td>Inteiro</td></tr><tr><td><strong>Expire After Write Time (s) (quando <code>time_based</code> é selecionado)</strong></td><td>Define o tempo de expiração após os dados serem gravados, em segundos.</td><td><code>300</code></td><td>Inteiro</td></tr><tr><td><strong>Fail On Error</strong></td><td>Se a opção for ativada, a execução do pipeline com erro será interrompida. Caso contrário, a execução do pipeline continua, mas o resultado mostrará um valor falso para a propriedade <code>"success"</code>.</td><td>False</td><td>Booleano</td></tr></tbody></table>

### **Aba Optional**

<table data-full-width="true"><thead><tr><th>Parâmetro</th><th>Descrição</th><th>Valor padrão</th><th>Tipo de dado</th></tr></thead><tbody><tr><td><strong>Create Cache If Not Exist</strong></td><td>Cria automaticamente um novo Caffeine cache se nenhum for configurado ou encontrado no registro. Quando desativado, tentar acessar um cache inexistente resultará em um erro.</td><td>True</td><td>Booleano</td></tr><tr><td><strong>Do not display the result</strong></td><td>Quando ativado, não indica se a ação teve um resultado. Isso é mais útil para operações de <code>Get</code>.</td><td>True</td><td>Booleano</td></tr><tr><td><strong>Not showing success</strong></td><td>Quando ativado, não indica se a ação foi bem-sucedida. Isso é mais útil para operações de <code>Put</code>.</td><td>True</td><td>Booleano</td></tr></tbody></table>

### **Aba Documentation**

<table data-full-width="true"><thead><tr><th>Parâmetro</th><th>Descrição</th><th>Valor padrão</th><th>Tipo de dado</th></tr></thead><tbody><tr><td><strong>Documentation</strong></td><td>Seção para documentar qualquer informação necessária sobre a configuração do conector e regras de negócio.</td><td>N/A</td><td>String</td></tr></tbody></table>

## **Exemplo de uso**

Neste exemplo, usamos dois conectores Caffeine Cache no fluxo: um no início com a ação `Put` e outro no final do fluxo com a ação `Get`.

O primeiro Caffeine Cache armazena dados no cache para uso posterior. Aqui está a configuração:

* **Cache Name:** `digibee`
* **Action:** `Put`
* **Key:** `token`
* **Raw Mode:** `Disabled`
* **Value:** `digibee_cache`
* **Eviction Type:** `size_based`
* **Initial Capacity:** `10`
* **Maximum Size:** `999`

Ao executar apenas este conector, a saída abaixo confirma que os dados foram armazenados com sucesso no cache:

```json
{
  "success": true
}
```

No final do fluxo, recuperamos os dados armazenados usando outro conector Caffeine Cache, agora configurado da seguinte forma:

* **Cache Name:** `digibee`
* **Action:** `Get`
* **Key:** `token`

Ao executar o fluxo completo, recebemos a seguinte saída, confirmando a recuperação dos dados armazenados no cache:

```json
{
  "success": true,
  "body": {
    "result": "digibee_cache"
  }
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.digibee.com/documentation/connectors-and-triggers/pt-br/connectors/structured-data/caffeine-cache.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
