O Redis é um banco de dados in-memory altamente disponível. Seu armazenamento de dados de chave-valor com persistência em disco é ideal para vários usos de alta disponibilidade.

Por outro lado, o Docker é uma ferramenta para conteinerizar aplicativos e serviços, isolando seus ambientes e permitindo executá-los separadamente. Você pode usar o Docker como um gerenciador de pacotes para aplicativos e serviços com tudo o que for necessário: dependências, configurações, scripts, etc. Um script chamado Dockerfile é colocado dentro do contêiner Docker e permite que você implemente o contêiner como uma entidade única.

Este artigo ensina a usar essas duas tecnologias de código aberto de forma eficaz. Também mostra por que a execução de clusters Redis dentro de contêineres Docker é vital, bem como as vantagens e benefícios de fazer isso em comparação com a execução de clusters Redis em máquinas virtuais ou servidores bare metal.

Os vários usos do Redis

O Redis tem várias vantagens. Seus usos mais populares incluem:

  • Cache de banco de dados de chave-valor distribuído
  • Agente de mensagens
  • Servidor de cache de objeto persistente

Além disso, o Redis é compatível com vários tipos e estruturas de dados, o que o torna adequado para uso como camada de banco de dados primária e secundária para aplicativos. Ele também é compatível com listas, fluxos, hashes, conjuntos, etc.

No entanto, você pode aumentar ainda mais os benefícios do Redis ao colocá-lo em contêineres.

O Redis é melhor dentro de um contêiner

O Redis é uma das imagens do Docker mais populares no registro do Docker, com mais de um bilhão de downloads. O motivo para conteinerizar os aplicativos Redis é obter os benefícios do Docker e o suporte da comunidade para os casos de uso mais comuns do Redis.

A imagem do Redis no Docker tem uma comunidade de código aberto que cria e mantém uma documentação clara. E, para completar, o Docker é altamente confiável, e propicia um uso fácil e flexível.

Facilidade de uso

O Docker isola os ambientes para aplicativos e serviços que são executados dentro de contêineres. O isolamento significa que você pode empacotar, criar e enviar imagens do Redis que funcionam independentemente do sistema operacional do host, o que facilita o desenvolvimento e a execução de aplicativos Redis dentro do Docker. Além disso, o Docker Desktop simplifica a configuração de um ambiente de desenvolvimento local consistente, o que é especialmente útil para equipes grandes.

Segurança:

Você pode examinar vulnerabilidades de segurança com o Redis dentro de um contêiner. O Docker usa o Snyk, uma ferramenta que oferece visibilidade sobre a segurança das imagens do Docker. Ele examina os contêineres do Docker e fornece detalhes e correções em caso de imagens corrompidas. O Docker também pode gerar uma lista de materiais de software (SBOM) para examinar todas as dependências usadas na criação de imagens de contêineres, embora isso ainda seja experimental.

Flexibilidade

O Docker está disponível para a maioria dos sistemas operacionais e aplicativos baseados em Unix e Windows. Ao usar contêineres para isolar o software de seu ambiente e garantir que funcione com todos os sistemas, os aplicativos e serviços Redis sempre são executados, independentemente da infraestrutura.

Confiabilidade

O Docker permite executar de forma confiável qualquer carga de trabalho conteinerizada em qualquer ambiente. O Redis é confiável no Docker porque os contêineres Docker tiram periodicamente instantâneos da imagem do contêiner, permitindo que você reverta para esses instantâneos em caso de banco de dados ruim ou corrompido. Você também pode criar um volume Docker montando um diretório contendo o arquivo do banco de dados Redis dentro do contêiner.

Um volume Docker ajuda a manter o contêiner seguro contra qualquer forma de perda acidental de dados. No entanto, uma ressalva é que os volumes Docker não incluem instantâneos de imagem. Você deve salvar manualmente ou fazer backup dos dados do seu arquivo de banco de dados Redis periodicamente.

Como usar o Redis com o Docker

Para colocar seu armazenamento Redis dentro de um contêiner Docker, você deve ter o Docker no ambiente de destino. As instruções a seguir mostram como instalar o Docker no Windows.

Você pode seguir um guia no site do Docker para um sistema operacional baseado em Unix. Após a instalação e a configuração, você pode criar uma rede dentro do seu contêiner Docker. Daí você pode instalar o Redis e criar um banco de dados. Por fim, pode realizar operações no seu banco de dados Redis.

Primeiro, instale o Docker em seu sistema operacional. Opcionalmente, navegue até o Docker Hub e crie uma conta. Você precisa de uma conta para criar e publicar suas imagens.

Docker Hub.
Docker Hub.

Depois de criar uma conta, faça login no Docker Hub e baixe a versão mais recente do Docker Desktop para o seu sistema operacional.

Página de download do Docker.
Página de download do Docker.

Após o procedimento de instalação, vá para a janela do terminal para ver se o Docker Engine está pronto para ser executado e digite o seguinte comando:

docker --version
Versão do Docker instalada.
Versão do Docker instalada.

Em seguida, digite: docker-compose --version.

Compose instalado com o Docker.
Compose instalado com o Docker.

O Compose é uma ferramenta para definir e executar aplicativos Docker de vários contêineres usando arquivos YAML, que você usa para configurar serviços de aplicativos.

Você pode executar um Redis Dockerizado para confirmar que o Docker Engine está instalado e funcionando usando o código abaixo. Este exemplo executa a imagem do Redis a partir do Docker Hub e a nomeia my-redis-container.

docker run --name my-redis-container -d redis
Imagem do Redis do Docker Hub com o nome my-redis-container.
Imagem do Redis do Docker Hub com o nome my-redis-container.

Como você não tem a imagem localmente, o Docker extrai a imagem do Redis do Docker Hub.

Agora você pode abrir o Docker Desktop para confirmar que ele extraiu a imagem do Redis. No painel de controle, clique em Images no painel à esquerda.

Docker Desktop.
Docker Desktop.

E então você pode criar uma rede. Observe que o driver do Docker usa o bridge ou os drivers de rede integrados de sobreposição para criar uma rede do Docker. Você também pode instalar e usar um driver de rede de terceiros.

A diferença é que as redes bridge são isoladas em uma única instalação do Docker Engine, ao passo que as redes de sobreposição abrangem vários hosts Docker, cada um executando um mecanismo.

Digite:

docker network create -d bridge kinsta-demo-network
Rede do Docker com o driver bridge.
Rede do Docker com o driver bridge.

Se você não especificar nenhum driver por padrão, o Docker usará o driver bridge para criar uma nova rede, pois ele cria automaticamente o driver bridge quando você instala o Docker Engine. No entanto, se você executar um contêiner Docker com o comando run, ele não usará essa rede.

Agora que você tem uma rede, o próximo passo é instalar o Redis dentro do contêiner Docker. Para fazer isso, digite: docker pull redis.

Obtendo a imagem do Redis no Docker Hub.
Obtendo a imagem do Redis no Docker Hub.

Para verificar se a imagem do Redis está instalada corretamente, execute um dos seguintes comandos:

docker images
docker image ls
Imagens do Docker disponíveis no terminal do usuário.
Imagens do Docker disponíveis no terminal do usuário.

Em seguida, você cria e inicializa o contêiner do Redis. Para fazer isso, execute o seguinte comando:

docker run -it –name dev_kinsta_redis_container -d redis
Contêiner Docker.
Contêiner Docker.

Agora verifique se o Redis está sendo executado no contêiner. Digite: docker ps.

Confirme que o Redis está instalado e sendo executado em um contêiner.
Confirme que o Redis está instalado e sendo executado em um contêiner.

Agora que você confirmou que o seu contêiner Docker está em funcionamento, pode adicionar o contêiner à rede. Digite: docker network connect .

Adicione um contêiner Docker à rede do Docker que foi criada.
Adicione um contêiner Docker à rede do Docker que foi criada.

Com tudo funcionando como esperado, a próxima etapa é verificar se o servidor Redis em execução no Docker está pronto para aceitar conexões. Para isso, use docker logs.

Verifique se a imagem do Redis está sendo executada dentro do contêiner Docker.
Verifique se a imagem do Redis está sendo executada dentro do contêiner Docker.

A seguir, você deve criar um banco de dados, visto que precisa de uma maneira de se conectar ao contêiner do Redis para executar comandos no servidor. Para fazer isso, digite: docker exec -it bash. Você pode usar o nome do contêiner e o ID do contêiner de forma intercambiável.

Conecte-se à instância do contêiner do Redis.
Conecte-se à instância do contêiner do Redis.

No contêiner, use a CLI para executar comandos. Observe que o Redis instalou automaticamente os hosts Docker. Para usar a Redis-CLI, digite: redis-cli.

Use a CLI do Redis para executar comandos do Redis.
Use a CLI do Redis para executar comandos do Redis.

Isso conecta você à porta padrão do Redis no host local. Digite ping, e a resposta deve ser pong.

Faça o teste para ver se a conexão do Redis está funcionando.
Faça o teste para ver se a conexão do Redis está funcionando.

Em seguida, selecione um banco de dados dentro do seu servidor Redis digitando select. Embora o banco de dados padrão seja 0, selecione db 1.

Selecionando um banco de dados Redis específico.
Selecionando um banco de dados Redis específico.

Em seguida, insira dados no banco de dados. Use o comando SET do Redis. Para fazer isso, digite SET <key> <value>. Por exemplo:

SET mykey "Hello"

Para obter a mesma chave, digite:

get myKey
Inserindo e recuperando dados do Redis.
Inserindo e recuperando dados do Redis.

Para obter o valor da chave, execute get. Isso retorna o valor. Em seguida, monitore seu banco de dados Redis digitando MONITOR.

Monitorando o banco de dados Redis.
Monitorando o banco de dados Redis.

Por fim, interrompa o servidor Redis saindo da CLI. Digite exit duas vezes para sair da CLI e do Redis.

Saindo da CLI do Redis.
Saindo da CLI do Redis.

Por último, interrompa a execução do contêiner do Redis digitando docker stop.

Execute o comando para interromper a execução do contêiner Docker.
Execute o comando para interromper a execução do contêiner Docker.

Redis com o DevKinsta

O DevKinsta permite que você conecte um site WordPress a um banco de dados Redis. Com o DevKinsta, o complemento do Redis funciona perfeitamente como um cache de objetos para manter dados persistentes em vários carregamentos de página. Isso significa que, ao usar o complemento do Redis, você pode usar o cache para reutilizar objetos em vez de consultar constantemente o banco de dados MySQL.

Após baixar e configurar o DevKinsta, instale o Docker Desktop como uma dependência, que ele usa para criar arquivos de ambiente local dentro de um contêiner. Com essa configuração, você pode configurar o complemento do Redis no DevKinsta.

Portanto, o complemento do Redis para o DevKinsta pode ser usado como uma fonte secundária, reduzindo a carga no banco de dados primário, melhorando os tempos de resposta e fazendo o aplicativo funcionar mais rápido.

Isso se traduz em um aplicativo que lida com mais carga e escalona de forma eficiente. Confira este artigo para usar o plugin Redis em seu site.

Resumo

Há muitas vantagens em executar o Redis dentro de um contêiner Docker. Ele oferece um ambiente sandbox para seus aplicativos, para que você não precise mais se preocupar com a plataforma na qual implementa seus aplicativos. Além disso, o Docker proporciona facilidade de uso, flexibilidade e alta confiabilidade.

Em relação à segurança, você pode verificar e procurar vulnerabilidades de forma imediata com o Snyk, uma ferramenta que oferece visibilidade da segurança das imagens do Docker. E quanto à flexibilidade, o Docker funciona para a maioria dos sistemas operacionais e aplicativos baseados em Unix e Windows. Isso significa que aplicativos ou serviços dockerizados, ou conteinerizados sempre são executados, independentemente do sistema operacional.

É fácil usar o Docker e o complemento do Redis com o DevKinsta, que ativa localmente um site WordPress dockerizado quando você o inicia. Confira o DevKinsta e o complemento do Redis para obter o poder do Redis no Docker hoje mesmo.

Salman Ravoof

Salman Ravoof is a self-taught web developer, writer, creator, and a huge admirer of Free and Open Source Software (FOSS). Besides tech, he's excited by science, philosophy, photography, arts, cats, and food. Learn more about him on his website, and connect with Salman on Twitter.