O que é o Redis: um servidor de estruturas de dados em memória
A documentação do Redis abre a página de tipos de dados com uma afirmação curta: "Redis is a data structure server". Isso não faz dele um banco relacional nem um cache simples. É um serviço de rede separado com que o seu app conversa. Ele guarda os dados na RAM, organizados como um conjunto de estruturas de dados com nome em vez de linhas e colunas.
Este app nunca conversa com um. Um grep no Gemfile e no Gemfile.lock deste app por redis, com qualquer capitalização, não retorna nada: nenhuma gem e nenhuma dependência transitiva. O curso anterior "Processadores de jobs: o papel do Sidekiq" chegou ao mesmo resultado por outro ângulo. O Sidekiq, gem que muita gente de Rails associa a jobs em background, exige o Redis como armazenamento. Este app roda o Solid Queue no lugar. Aquele curso também tratou de dois fatos que este curso não vai repetir. O Redis guarda os dados na RAM. Ele tem dois mecanismos de persistência, snapshots RDB (ligados por padrão) e um log AOF (desligado por padrão), que decidem quanto sobrevive a uma queda.
Então por que existe um curso sobre Redis num app que não o usa?
Porque "data store em memória" cobre mais do que a fila do Sidekiq. O Redis é uma das peças de infraestrutura mais usadas. As estruturas de dados, as trocas de persistência e o pub/sub dele valem a pena conhecer, adote um app o Redis ou não. Este curso confere cada afirmação sobre o Redis na documentação do Redis. Ele também continua apontando a escolha deste app de não rodar Redis, como o curso anterior fez com o Sidekiq.
A forma da comparação
Em muitos apps Rails, o Redis faz três trabalhos que este app resolve com o banco de dados. "Solid Cache: cache no banco de dados" tratou do Rails.cache apoiado na tabela SolidCache::Entry. "Solid Queue: jobs em background" tratou da fila de jobs deste app, apoiada em tabelas do Postgres. O terceiro é o adapter do Action Cable: o Gemfile deste app tem gem "solid_cable", então os broadcasts também passam pelo Postgres. Cache, fila e a camada de pub/sub do Action Cable, os três papéis que o Redis costuma ter num app Rails, rodam no servidor Postgres deste app. A aula final junta isso.
O que este curso cobre
Sete aulas. Cada afirmação sobre o Redis é conferida na documentação do Redis, e cada afirmação sobre este app no Gemfile e na configuração atuais. As aulas 2 a 4 tratam dos tipos de dados centrais do Redis: strings, depois lists e sets, depois hashes e sorted sets. A aula 5 trata de como o Redis decide o que remover quando a RAM acaba, com uma recapitulação curta das trocas de persistência do curso de Sidekiq. A aula 6 trata do pub/sub, ao lado do adapter do Action Cable deste app. A aula 7 junta de novo a configuração sem Redis deste app.
Continue com a aula 2
Strings no Redis: o tipo de dado mais simples, e o que SET/GET fazem
Trata de strings, SET, GET, MSET, MGET e INCR atômico, comparados ao increment com trava de linha do Solid Cache.
Com uma conta grátis você também tem os quizzes, seu progresso e suas anotações, e a discussão.