Redis®*: Utilizar com Ruby

Como ligar o Redis ao Ruby

👋 Bem-vindo à documentação da Stackhero!

A Stackhero disponibiliza uma solução Redis cloud pronta a usar, que oferece várias vantagens, incluindo:

  • Interface web Redis Commander incluída.
  • Tamanho e transferências de mensagens ilimitados.
  • Atualizações fáceis com apenas um clique.
  • Performance otimizada e segurança reforçada, graças a uma infraestrutura privada e dedicada.

Poupe tempo e simplifique a sua vida: bastam 5 minutos para experimentar a solução de alojamento Redis cloud da Stackhero!

O Redis, que significa Remote Dictionary Server, é uma base de dados open-source em memória que oferece um desempenho e flexibilidade excecionais.

Frequentemente referido como uma base de dados NoSQL, o Redis suporta uma vasta gama de estruturas de dados, como strings, hashes, listas, sets e sorted sets, entre outras. Com operações de alta velocidade e capacidade para lidar com grandes volumes de dados, o Redis tornou-se uma escolha popular para cache, analytics em tempo real, sistemas de mensagens e muitos outros casos de utilização.

O Redis pode ser integrado de forma transparente com Ruby e Ruby on Rails para melhorar o desempenho, a escalabilidade e a flexibilidade. Ao tirar partido do Redis, os programadores Ruby podem implementar várias funcionalidades, como cache, gestão de sessões, processamento de dados em tempo real e processamento de tarefas em background, entre outras.

Aqui estão algumas formas comuns de utilização do Redis com Ruby e Ruby on Rails:

  1. Cache: O Redis pode ser utilizado como sistema de cache em aplicações Rails para acelerar os tempos de resposta e reduzir a carga sobre a base de dados.
  2. Processamento de tarefas em background: O Redis serve como backend para bibliotecas populares de processamento de tarefas em background como Sidekiq e Resque, melhorando o desempenho e a fiabilidade das tarefas em background nas aplicações Rails.
  3. Funcionalidades em tempo real: A funcionalidade Pub/Sub do Redis permite que aplicações Rails implementem funcionalidades em tempo real, como notificações, sistemas de chat e analytics em tempo real, facilitando a troca rápida e eficiente de mensagens entre diferentes componentes da aplicação.

A Stackhero oferece uma solução Ruby cloud pronta a usar, que proporciona várias vantagens, incluindo:

  • Implemente a sua aplicação em segundos com um simples git push.
  • Utilize o seu próprio domínio e beneficie da configuração automática de certificados HTTPS para maior segurança.
  • Desfrute de tranquilidade com backups automáticos, atualizações com um clique e uma estrutura de preços simples, transparente e previsível.
  • Obtenha desempenho otimizado e segurança robusta graças a uma infraestrutura privada e dedicada.

Poupe tempo e simplifique a sua vida: bastam 5 minutos para experimentar a solução de alojamento Ruby cloud da Stackhero.

Para começar, deverá instalar a gem "redis":

bundle add redis

De seguida, edite o ficheiro config/environments/production.rb e adicione esta linha:

config.cache_store = :redis_cache_store, { url: ENV["REDIS_URL"] }

Por fim, defina a variável de ambiente REDIS_URL. Pode utilizar este URL, substituindo apenas <yourPassword> e <XXXXXX> pelos seus dados:

REDIS_URL="rediss://default:<yourPassword>@<XXXXXX>.stackhero-network.com:<PORT_TLS>"

Para mais informações sobre como configurar o Redis como sistema de cache para Ruby on Rails, consulte a documentação oficial do Rails aqui.

O Sidekiq irá utilizar automaticamente o servidor Redis definido na variável de ambiente REDIS_URL.

Pode definir a variável de ambiente REDIS_URL desta forma, substituindo <password> e <XXXXXX> pelos seus dados:

REDIS_URL="rediss://default:<password>@<XXXXXX>.stackhero-network.com:<PORT_TLS>"

Por predefinição, o Sidekiq está configurado de forma a não tolerar perturbações na rede. Para melhorar esta situação, sugerimos que altere a configuração do cliente Sidekiq em config/initializers/sidekiq.rb para reforçar a estabilidade:

# Ficheiro config/initializers/sidekiq.rb
Sidekiq.configure_client do |config|
  config.redis = {
    network_timeout: 5, # Definir o timeout para 5 segundos
    pool_timeout: 5, # Definir o timeout para 5 segundos
    reconnect_attempts: Array.new(240, 0.5) # Tentar reconectar 240 vezes, a cada 0,5 segundos (120 segundos/2 minutos no total) antes de lançar um erro
  }
end

Esta configuração garante que, se o seu servidor Redis ficar indisponível, o cliente tentará reconectar durante 2 minutos antes de reportar um erro. Isto dá tempo, por exemplo, para o servidor Redis reiniciar. Dependendo da utilização do seu Sidekiq, pode ajustar este parâmetro para melhor se adequar às suas necessidades específicas.

Para mais informações sobre Sidekiq e Redis, consulte a documentação oficial aqui.

O Resque irá utilizar automaticamente o servidor Redis definido na variável de ambiente REDIS_URL.

Pode definir a variável de ambiente REDIS_URL desta forma, substituindo <yourPassword> e <XXXXXX> pelos seus dados:

REDIS_URL="rediss://default:<yourPassword>@<XXXXXX>.stackhero-network.com:<PORT_TLS>"

Para mais informações sobre Resque e Redis, consulte a documentação oficial aqui.