Escalabilidade com Redis
Turbinando o Sistema com Redis
Mario?
• Arquiteto de Soluções Digitais
• Embarcadero MVP desde 2016
• 20+ anos desenvolvendo software
• Delphi, Python, Lua, JavaScript, C++
• PostgreSQL, MongoDB, Redis, Neo4J, Cassandra
• Experiência em sistemas críticos 24x7
• Em todas as redes: /jmarioguedes
• Iniciando a arrayOF Treinamento e Assessoria
• Com foco em modernização de soluções legadas
• mario.guedes@arrayof.com.br
Agenda
• Mario?
• O que é Redis?
• Possibilidades com o Redis?
• Exemplo prático
• Redis no Windows
• Q&A
REmote
DIctionary
Server
http://redis.io/
O que é o Redis?
• Banco noSQL orientado a chavevalor
• Imagine um grande arquivo INI
• Armazena os dados na memória RAM
• “Velocidade, eu sou a velocidade”
• Possui vários tipos de dados e operações, oferecendo
diversas possibilidades
• Suporte à expiração automática de dados: TTL
• Suporte à execução de scripts em Lua
• Funcionamento em cluster
Possibilidades com o Redis
• Cacheamento lado servidor:
• “O processamento mais rápido é aquele que não é feito”
• Cuidados com invalidação e revalidação de cache
• Isso aliviará a carga no seu banco principal
• Serviço de mensageria por oferecer PUB/SUB e enfileiramento de comandos
FIFO
• Armazenamento de sessões de usuário para compartilhar entre várias
instâncias
• Manutenção de dashboards em tempo real
• Funcionamento off-line como em PDVs
Por isso a promessa de Escalabilidade
• “Escalabilidade indica a capacidade do sistema em
manipular uma porção crescente de trabalho de forma
uniforme, ou estar preparado para crescer.”
• https://pt.wikipedia.org/wiki/Escalabilidade
• O Redis nos provê escalabilidade por responder
extremamente rápido às solicitações.
• Podemos adotar, então, a escala horizontal do backend com
abordagem de micro serviços.
Chave
• A chave é uma string ou array de bytes
• Evite nomes longos
• Use hash MD5 se for o caso
• Hierarquize com “:” e um com o finalizador “#”
• CODERAGE:BRASIL:2019:REDIS#
• Para listar as chaves temos:
• * Vários caracteres subsequentes
• ? Qualquer caractere em uma determinada posição
• [] Conjunto de caracteres específico em uma determinada posição
Valor
• É um array de bytes podendo representar:
• String
• Hash
• Lista
• Conjuntos
• Mapa de bits
• Entre outros
Redis no Windows
• Não há suporte oficial ao Windows
• Há uma portabilização antiga suficientemente boa em:
http://bit.ly/redis_windows
• Mas considere executar o Redis mais atual em uma VM ou
Docker.
Redis no Delphi
• O protocolo de comunicação com o Redis é extremamente
simples e baseado em texto:
https://redis.io/topics/protocol
• Recomendo a biblioteca desenvolvida pelo Daniele Teti:
http://www.danieleteti.it/redis-client/
RECAP
• O Redis é estratégico
• Cuidados ao executar no
S.O. Windows
• Para mensageria é
suficientemente bom porém
cogite o RabbitMQ
• O Redis não substituirá o seu
banco de dados
• O Redis não é só o que foi
mostrado aqui
• mario.guedes@arrayof.com.br
• github.com/jmarioguedes/CodeRage2019_Redis.git
• arrayof.com.br

Escalabilidade com Redis

  • 1.
  • 2.
    Mario? • Arquiteto deSoluções Digitais • Embarcadero MVP desde 2016 • 20+ anos desenvolvendo software • Delphi, Python, Lua, JavaScript, C++ • PostgreSQL, MongoDB, Redis, Neo4J, Cassandra • Experiência em sistemas críticos 24x7 • Em todas as redes: /jmarioguedes • Iniciando a arrayOF Treinamento e Assessoria • Com foco em modernização de soluções legadas • mario.guedes@arrayof.com.br
  • 3.
    Agenda • Mario? • Oque é Redis? • Possibilidades com o Redis? • Exemplo prático • Redis no Windows • Q&A
  • 4.
  • 5.
    O que éo Redis? • Banco noSQL orientado a chavevalor • Imagine um grande arquivo INI • Armazena os dados na memória RAM • “Velocidade, eu sou a velocidade” • Possui vários tipos de dados e operações, oferecendo diversas possibilidades • Suporte à expiração automática de dados: TTL • Suporte à execução de scripts em Lua • Funcionamento em cluster
  • 6.
    Possibilidades com oRedis • Cacheamento lado servidor: • “O processamento mais rápido é aquele que não é feito” • Cuidados com invalidação e revalidação de cache • Isso aliviará a carga no seu banco principal • Serviço de mensageria por oferecer PUB/SUB e enfileiramento de comandos FIFO • Armazenamento de sessões de usuário para compartilhar entre várias instâncias • Manutenção de dashboards em tempo real • Funcionamento off-line como em PDVs
  • 7.
    Por isso apromessa de Escalabilidade • “Escalabilidade indica a capacidade do sistema em manipular uma porção crescente de trabalho de forma uniforme, ou estar preparado para crescer.” • https://pt.wikipedia.org/wiki/Escalabilidade • O Redis nos provê escalabilidade por responder extremamente rápido às solicitações. • Podemos adotar, então, a escala horizontal do backend com abordagem de micro serviços.
  • 8.
    Chave • A chaveé uma string ou array de bytes • Evite nomes longos • Use hash MD5 se for o caso • Hierarquize com “:” e um com o finalizador “#” • CODERAGE:BRASIL:2019:REDIS# • Para listar as chaves temos: • * Vários caracteres subsequentes • ? Qualquer caractere em uma determinada posição • [] Conjunto de caracteres específico em uma determinada posição
  • 9.
    Valor • É umarray de bytes podendo representar: • String • Hash • Lista • Conjuntos • Mapa de bits • Entre outros
  • 10.
    Redis no Windows •Não há suporte oficial ao Windows • Há uma portabilização antiga suficientemente boa em: http://bit.ly/redis_windows • Mas considere executar o Redis mais atual em uma VM ou Docker.
  • 11.
    Redis no Delphi •O protocolo de comunicação com o Redis é extremamente simples e baseado em texto: https://redis.io/topics/protocol • Recomendo a biblioteca desenvolvida pelo Daniele Teti: http://www.danieleteti.it/redis-client/
  • 12.
    RECAP • O Redisé estratégico • Cuidados ao executar no S.O. Windows • Para mensageria é suficientemente bom porém cogite o RabbitMQ • O Redis não substituirá o seu banco de dados • O Redis não é só o que foi mostrado aqui
  • 13.