# Configuração do Redis para Memória do Chatbot
## O que é armazenado no Redis?
```json
{
"historico": [
{ "role": "user", "content": "mensagem", "timestamp": 1234567890 },
{ "role": "assistant", "content": "resposta", "timestamp": 1234567891 }
],
"grupos_frequentes": [
{ "nome": "Trabalho", "id": "5511999999999-1234567890@g.us" }
],
"contatos_frequentes": [
{ "nome": "João", "numero": "5511999999999" }
],
"ultima_acao": {
"tipo": "enviar_texto",
"descricao": "{\"numero\": \"5511...\"}",
"timestamp": 1234567890
},
"preferencias": {}
}
```
**TTL**: 7 dias (604800 segundos) - após 7 dias sem conversar, a memória expira.
---
## Opção 1: Redis Local (Docker)
### Instalar Redis via Docker
```bash
docker run -d \
--name redis-chatbot \
-p 6379:6379 \
-v redis-data:/data \
redis:alpine \
redis-server --appendonly yes
```
### Configuração no n8n
```
Host: localhost
Port: 6379
Password: (vazio)
```
---
## Opção 2: Redis Cloud (Gratuito)
### 1. Criar conta no Redis Cloud
- Acesse: https://redis.com/try-free/
- Crie uma conta gratuita
- Crie um database (tier gratuito: 30MB)
### 2. Obter credenciais
Após criar o database, você terá:
- **Public endpoint**: `redis-12345.c1.us-east-1-2.ec2.cloud.redislabs.com:12345`
- **Default user password**: `sua_senha_aqui`
### 3. Configuração no n8n
```
Host: redis-12345.c1.us-east-1-2.ec2.cloud.redislabs.com
Port: 12345
Password: sua_senha_aqui
```
---
## Opção 3: Redis no mesmo servidor do n8n
### Instalar Redis
```bash
# Ubuntu/Debian
sudo apt update
sudo apt install redis-server -y
# Iniciar serviço
sudo systemctl enable redis-server
sudo systemctl start redis-server
# Verificar
redis-cli ping
# Deve retornar: PONG
```
### Configuração no n8n
```
Host: localhost
Port: 6379
Password: (vazio, a menos que configure)
```
### (Opcional) Configurar senha no Redis
```bash
# Editar configuração
sudo nano /etc/redis/redis.conf
# Descomentar e definir senha:
requirepass sua_senha_segura
# Reiniciar
sudo systemctl restart redis-server
```
---
## Configurar Credencial no n8n
1. No n8n, vá em **Settings → Credentials → Add Credential**
2. Escolha **Redis**
3. Preencha:
- **Host**: seu host Redis
- **Port**: 6379 (ou outra porta)
- **Password**: sua senha (se configurada)
- **Database**: 0 (padrão)
4. Salve como "Redis"
---
## Estrutura das Chaves Redis
| Chave | Descrição | TTL |
|-------|-----------|-----|
| `uazapi:chat:{phone}` | Contexto do usuário | 7 dias |
### Exemplo de chave
```
uazapi:chat:5511999999999
```
---
## Comandos úteis Redis CLI
### Ver todas as chaves do chatbot
```bash
redis-cli KEYS "uazapi:chat:*"
```
### Ver contexto de um usuário
```bash
redis-cli GET "uazapi:chat:5511999999999"
```
### Limpar memória de um usuário
```bash
redis-cli DEL "uazapi:chat:5511999999999"
```
### Limpar toda memória do chatbot
```bash
redis-cli KEYS "uazapi:chat:*" | xargs redis-cli DEL
```
### Ver TTL de uma chave
```bash
redis-cli TTL "uazapi:chat:5511999999999"
```
---
## Monitoramento
### Ver operações em tempo real
```bash
redis-cli MONITOR
```
### Ver uso de memória
```bash
redis-cli INFO memory
```
---
## Troubleshooting
### Erro: "Connection refused"
- Verifique se Redis está rodando: `redis-cli ping`
- Verifique firewall/porta
### Erro: "NOAUTH Authentication required"
- Configure a senha na credencial do n8n
### Memória não persiste
- Verifique o TTL (7 dias padrão)
- Redis Cloud free tier pode limitar
- Verifique se `appendonly yes` está habilitado
### Contexto muito grande
- O workflow limita a 20 mensagens no histórico
- Grupos e contatos limitados a 10 e 20 respectivamente