SlideShare una empresa de Scribd logo
1 de 14
Globalcode – Open4education
Trilha Rad Delphi / C++
Mario Guedes
Artesão de Software
Globalcode – Open4education
Possibilidades com o REDIS no Delphi
“Velocidade, eu sou a velocidade”
Globalcode – Open4education
Que Mario?
40 anos, pai do Júlio e da Fernanda
Fora da Matrix desde 1999
Artesão de Software em Delphi, Python, Lua,
JavaScript, noSQL ...
Estou CTO na Sofie Tecnologia
Vivência em soluções de grande porte para Contact
Center
Em todas as redes: @jmarioguedes
jmarioguedes@gmail.com
Globalcode – Open4education
O que é o REDIS?
• REDIS de REmote DIctionary Server – Servidor de Dicionário Remoto
• É um storage orientado à chave e valor
• Imagine um grande e poderoso arquivo INI
• Onde você referencia uma chave e obtém um valor – simples assim!
• Os dados ficam, essencialmente, na memória RAM podendo ou não ser persistido em disco
• Pode ser configurado para trabalhar em cluster
• https://redis.io/
Globalcode – Open4education
Que mais?
• Criado por Salvatore Sanfiippo
• Open-source desde 2009 e codificado em C “puro”
• Suporta estruturas de dados como:
• Strings
• Hashes
• Listas
• Conjuntos
• Conjuntos classificados com consultas de intervalo
• Bitmaps
• Hiperloglogs
• Índices geoespaciais com consultas radius
Globalcode – Open4education
Algo mais?
• É blocante:
• Só executa uma solicitação por vez
• Isso é ótimo
• Isso é ruim
• Tem só que saber lidar com isso
• Executa script Lua nos poupando o tráfego de dados
• Não possui suporte oficial no Windows, apesar de ser possível usar:
• https://github.com/MicrosoftArchive/redis/releases
Globalcode – Open4education
Problemas que podemos resolver
• Armazenamento de sessão do DataSnap, provendo escalabilidade horizontal ao backend
• Banco de dados local para operação off-line, como frente de caixa ou comunicação matriz e
filial
• É leve o suficiente para rodar em uma estação
• É poderoso o suficiente para rodar em um servidor
• Cacheamento lado servidor: o processamento mais rápido é aquele que não é feito
• Viabilização de dashboards em tempo real
• Mensageria entre os diversos artefatos de um ecossistema complexo: PUBSUB e Queue
• Interoperabilidade entre plataformas heterógenas
• Abordagem de micro serviços
Globalcode – Open4education
E no Delphi?
• O Danielle Tetti desenvolveu uma ótima biblioteca:
https://github.com/danieleteti/delphiredisclient
• Instale pelo GetIt Package Manager
Globalcode – Open4education
RESTCLIENTE MENSAGERIA SERVIÇOHTTP STORAGE
Macro esquema simplificado
Globalcode – Open4education
Principais comandos
• O Redis é bem rico em opções
• Os comandos triviais são:
• GET – Retorna o valor de uma chave
• SET – Atribui um valor à uma chave, com ou sem TTL (tempo de expiração da
chave)
• DEL – Deleta uma chave
• KEYS – Lista as chaves de acordo com um padrão, podendo ser utilizado *, ? e []
Globalcode – Open4education
Demonstração
 OPERAÇÕES BÁSICAS
 TESTE DE STRESS
 CONTROLE DE SESSÃO DO DATASNAP
 CACHEAMENTO LADO SERVIDOR
 ENFILEIRAMENTO
 PUBLICAÇÃO E ASSINATURA
 EXECUÇÃO DE UM SCRIPT LUA
Globalcode – Open4education
Exemplos práticos
• Atenção: Se você for adotar uma estratégia de mensageria
cogite o RabbitMQ
• Os exemplos podem ser baixados do meu GitHub:
https://github.com/jmarioguedes/TDC2018_REDIS
• Para fazer telas mais bonitas do que as minhas:
DESIGN DE INTERFACES EM DELPHI
https://thuliobittencourt.eadbox.com/courses/design-de-
interfaces-em-delphi
Globalcode – Open4education
Leituras interessantes
• Intensive Delphi 2017 – E este tal de REDIS hein?
Mario Guedes
https://youtu.be/6kfPeO9d3bU
• Mini Curso Gratuito Redis NoSQL
Alexandre Lima
https://www.portalgsti.com.br/cursos/mini-curso-gratuito-redis/
• Livro: Armazenando dados com Redis
Rodrigo Lazoti
https://www.casadocodigo.com.br/products/livro-redis
• Livro: Introdução à linguagem Lua
José Augusto N. G. Manzano
https://novatec.com.br/livros/introducao-a-linguagem-lua/
Globalcode – Open4education

Más contenido relacionado

La actualidad más candente

C++ projeleri
C++ projeleriC++ projeleri
C++ projeleri
sersld30
 
Node-v0.12の新機能について
Node-v0.12の新機能についてNode-v0.12の新機能について
Node-v0.12の新機能について
shigeki_ohtsu
 
Map Reduce 〜入門編:仕組みの理解とアルゴリズムデザイン〜
Map Reduce 〜入門編:仕組みの理解とアルゴリズムデザイン〜Map Reduce 〜入門編:仕組みの理解とアルゴリズムデザイン〜
Map Reduce 〜入門編:仕組みの理解とアルゴリズムデザイン〜
Takahiro Inoue
 
Source monitorと複雑度のはなし
Source monitorと複雑度のはなしSource monitorと複雑度のはなし
Source monitorと複雑度のはなし
aomori ringo
 

La actualidad más candente (20)

Laravelを用いたゲームサーバーのチューニング
Laravelを用いたゲームサーバーのチューニングLaravelを用いたゲームサーバーのチューニング
Laravelを用いたゲームサーバーのチューニング
 
強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話
 
Classic Vulnerabilities (MUCplusplus2022).pdf
Classic Vulnerabilities (MUCplusplus2022).pdfClassic Vulnerabilities (MUCplusplus2022).pdf
Classic Vulnerabilities (MUCplusplus2022).pdf
 
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのかDDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
 
ぐるぐるDDD(ドメイン駆動設計)に参加してみました
ぐるぐるDDD(ドメイン駆動設計)に参加してみましたぐるぐるDDD(ドメイン駆動設計)に参加してみました
ぐるぐるDDD(ドメイン駆動設計)に参加してみました
 
Building Instruqt, a scalable learning platform
Building Instruqt, a scalable learning platformBuilding Instruqt, a scalable learning platform
Building Instruqt, a scalable learning platform
 
C++ projeleri
C++ projeleriC++ projeleri
C++ projeleri
 
[OKKYCON] 박재성 - 의식적인 연습으로 TDD, 리팩토링 연습하기
[OKKYCON] 박재성 - 의식적인 연습으로 TDD, 리팩토링 연습하기[OKKYCON] 박재성 - 의식적인 연습으로 TDD, 리팩토링 연습하기
[OKKYCON] 박재성 - 의식적인 연습으로 TDD, 리팩토링 연습하기
 
프라우드넷의 연결 유지 기능과 홀펀칭-윤현민
프라우드넷의 연결 유지 기능과 홀펀칭-윤현민프라우드넷의 연결 유지 기능과 홀펀칭-윤현민
프라우드넷의 연결 유지 기능과 홀펀칭-윤현민
 
Polynomial reppresentation using Linkedlist-Application of LL.pptx
Polynomial reppresentation using Linkedlist-Application of LL.pptxPolynomial reppresentation using Linkedlist-Application of LL.pptx
Polynomial reppresentation using Linkedlist-Application of LL.pptx
 
Soma search
Soma searchSoma search
Soma search
 
Sql select
Sql select Sql select
Sql select
 
Graph Analytics with ArangoDB
Graph Analytics with ArangoDBGraph Analytics with ArangoDB
Graph Analytics with ArangoDB
 
Table functions - Planboard Symposium 2013
Table functions - Planboard Symposium 2013Table functions - Planboard Symposium 2013
Table functions - Planboard Symposium 2013
 
Oo delphi
Oo delphiOo delphi
Oo delphi
 
Node-v0.12の新機能について
Node-v0.12の新機能についてNode-v0.12の新機能について
Node-v0.12の新機能について
 
Building Better Backdoors with WMI - DerbyCon 2017
Building Better Backdoors with WMI - DerbyCon 2017Building Better Backdoors with WMI - DerbyCon 2017
Building Better Backdoors with WMI - DerbyCon 2017
 
잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback
잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback
잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback
 
Map Reduce 〜入門編:仕組みの理解とアルゴリズムデザイン〜
Map Reduce 〜入門編:仕組みの理解とアルゴリズムデザイン〜Map Reduce 〜入門編:仕組みの理解とアルゴリズムデザイン〜
Map Reduce 〜入門編:仕組みの理解とアルゴリズムデザイン〜
 
Source monitorと複雑度のはなし
Source monitorと複雑度のはなしSource monitorと複雑度のはなし
Source monitorと複雑度のはなし
 

Similar a TDCSP - 2018 - Possibilidades com o REDIS no Delphi

Open4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSourceOpen4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSource
tdc-globalcode
 

Similar a TDCSP - 2018 - Possibilidades com o REDIS no Delphi (20)

Intensive Delphi 2017 - E este tal de Redis hein?
Intensive Delphi 2017 - E este tal de Redis hein?Intensive Delphi 2017 - E este tal de Redis hein?
Intensive Delphi 2017 - E este tal de Redis hein?
 
Turbinando o seu sistema com Redis!
Turbinando o seu sistema com Redis!Turbinando o seu sistema com Redis!
Turbinando o seu sistema com Redis!
 
TDC2017 | São Paulo - Trilha Rad: Delphi C++ How we figured out we had a SRE...
TDC2017 | São Paulo - Trilha Rad: Delphi C++  How we figured out we had a SRE...TDC2017 | São Paulo - Trilha Rad: Delphi C++  How we figured out we had a SRE...
TDC2017 | São Paulo - Trilha Rad: Delphi C++ How we figured out we had a SRE...
 
Arquitetura escalável e resiliente com NGINX, DataSnap, REDIS e MongoDB
Arquitetura escalável e resiliente com NGINX, DataSnap, REDIS e MongoDBArquitetura escalável e resiliente com NGINX, DataSnap, REDIS e MongoDB
Arquitetura escalável e resiliente com NGINX, DataSnap, REDIS e MongoDB
 
Técnicas avançadas de acesso a múltiplos bancos de dados - TDC-SP 2017 - Tril...
Técnicas avançadas de acesso a múltiplos bancos de dados - TDC-SP 2017 - Tril...Técnicas avançadas de acesso a múltiplos bancos de dados - TDC-SP 2017 - Tril...
Técnicas avançadas de acesso a múltiplos bancos de dados - TDC-SP 2017 - Tril...
 
Microsserviço, Escalabilidade e Resiliência - #comofas?
Microsserviço, Escalabilidade e Resiliência - #comofas?Microsserviço, Escalabilidade e Resiliência - #comofas?
Microsserviço, Escalabilidade e Resiliência - #comofas?
 
Extreme Experience 2018 | Estudo de Caso: Aplicação DataSnap para 10.000 usuá...
Extreme Experience 2018 | Estudo de Caso: Aplicação DataSnap para 10.000 usuá...Extreme Experience 2018 | Estudo de Caso: Aplicação DataSnap para 10.000 usuá...
Extreme Experience 2018 | Estudo de Caso: Aplicação DataSnap para 10.000 usuá...
 
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...
 
Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...
Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...
Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...
 
Da introdução à prática com Drools Expert e Drools Flow
Da introdução à prática com Drools Expert e Drools FlowDa introdução à prática com Drools Expert e Drools Flow
Da introdução à prática com Drools Expert e Drools Flow
 
Escalabilidade com Redis
Escalabilidade com Redis Escalabilidade com Redis
Escalabilidade com Redis
 
Desafios e glórias na implementação de infra as code
Desafios e glórias na implementação de infra as codeDesafios e glórias na implementação de infra as code
Desafios e glórias na implementação de infra as code
 
Data Vault - TDC 2020 Porto Alegre
Data Vault - TDC 2020 Porto AlegreData Vault - TDC 2020 Porto Alegre
Data Vault - TDC 2020 Porto Alegre
 
Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...
Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...
Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...
 
Cache com redis novatec
Cache com redis novatecCache com redis novatec
Cache com redis novatec
 
Cache com redis novatec
Cache com redis novatecCache com redis novatec
Cache com redis novatec
 
Open4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSourceOpen4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSource
 
Internet das coisas - A Revolução já começou
Internet das coisas - A Revolução já começouInternet das coisas - A Revolução já começou
Internet das coisas - A Revolução já começou
 
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHPCombatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHP
 

Más de Mario Guedes

Más de Mario Guedes (20)

O que é e como devo usar o REDIS? - 1o Mobile REST Summit
O que é e como devo usar o REDIS? - 1o Mobile REST SummitO que é e como devo usar o REDIS? - 1o Mobile REST Summit
O que é e como devo usar o REDIS? - 1o Mobile REST Summit
 
Fazendo barba, cabelo e bigode com REDIS
Fazendo barba, cabelo e bigode com REDISFazendo barba, cabelo e bigode com REDIS
Fazendo barba, cabelo e bigode com REDIS
 
Integrando-se à Blockchain da Ethereum
Integrando-se à Blockchain da EthereumIntegrando-se à Blockchain da Ethereum
Integrando-se à Blockchain da Ethereum
 
Entendendo HTTP para entender o REST
Entendendo HTTP para entender o RESTEntendendo HTTP para entender o REST
Entendendo HTTP para entender o REST
 
Expressão Regular - Cookbook
Expressão Regular - CookbookExpressão Regular - Cookbook
Expressão Regular - Cookbook
 
Geolocalização com Redis e Google Maps
Geolocalização com Redis e Google MapsGeolocalização com Redis e Google Maps
Geolocalização com Redis e Google Maps
 
Foco no app, viva o serverless!
Foco no app, viva o serverless!Foco no app, viva o serverless!
Foco no app, viva o serverless!
 
Geolocalização com Redis e Google Maps
Geolocalização com Redis e Google MapsGeolocalização com Redis e Google Maps
Geolocalização com Redis e Google Maps
 
Paralelismo na prática: Threads de uma vez por todas e sem medo!
Paralelismo na prática: Threads de uma vez por todas e sem medo!Paralelismo na prática: Threads de uma vez por todas e sem medo!
Paralelismo na prática: Threads de uma vez por todas e sem medo!
 
Escalando o backend com NGINX e Redis
Escalando o backend com NGINX e RedisEscalando o backend com NGINX e Redis
Escalando o backend com NGINX e Redis
 
Extreme Experience 2018 | Python para quem sabe Delphi
Extreme Experience 2018 | Python para quem sabe DelphiExtreme Experience 2018 | Python para quem sabe Delphi
Extreme Experience 2018 | Python para quem sabe Delphi
 
BOT: Conversando com o seu sistema
BOT: Conversando com o seu sistemaBOT: Conversando com o seu sistema
BOT: Conversando com o seu sistema
 
Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...
Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...
Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...
 
Extreme 360º 2017 | Arquitetura Extrema: Rumo aos 10.000 usuários
Extreme 360º 2017 | Arquitetura Extrema: Rumo aos 10.000 usuáriosExtreme 360º 2017 | Arquitetura Extrema: Rumo aos 10.000 usuários
Extreme 360º 2017 | Arquitetura Extrema: Rumo aos 10.000 usuários
 
Big data da teoria à prática
Big data  da teoria à práticaBig data  da teoria à prática
Big data da teoria à prática
 
Integrando sua App ao Mundo via REST/JSON
Integrando sua App ao Mundo via REST/JSONIntegrando sua App ao Mundo via REST/JSON
Integrando sua App ao Mundo via REST/JSON
 
Delphi Parallel Programming Library
Delphi Parallel Programming LibraryDelphi Parallel Programming Library
Delphi Parallel Programming Library
 
Nova Infraestrutura JSON: System.JSON na prática
Nova Infraestrutura JSON: System.JSON na prática Nova Infraestrutura JSON: System.JSON na prática
Nova Infraestrutura JSON: System.JSON na prática
 
Abertura - GruPy-SP | G4 Solutions - Agosto 2015
Abertura - GruPy-SP | G4 Solutions - Agosto 2015Abertura - GruPy-SP | G4 Solutions - Agosto 2015
Abertura - GruPy-SP | G4 Solutions - Agosto 2015
 
Cacheamento Lado Servidor
Cacheamento Lado ServidorCacheamento Lado Servidor
Cacheamento Lado Servidor
 

TDCSP - 2018 - Possibilidades com o REDIS no Delphi

  • 1. Globalcode – Open4education Trilha Rad Delphi / C++ Mario Guedes Artesão de Software
  • 2. Globalcode – Open4education Possibilidades com o REDIS no Delphi “Velocidade, eu sou a velocidade”
  • 3. Globalcode – Open4education Que Mario? 40 anos, pai do Júlio e da Fernanda Fora da Matrix desde 1999 Artesão de Software em Delphi, Python, Lua, JavaScript, noSQL ... Estou CTO na Sofie Tecnologia Vivência em soluções de grande porte para Contact Center Em todas as redes: @jmarioguedes jmarioguedes@gmail.com
  • 4. Globalcode – Open4education O que é o REDIS? • REDIS de REmote DIctionary Server – Servidor de Dicionário Remoto • É um storage orientado à chave e valor • Imagine um grande e poderoso arquivo INI • Onde você referencia uma chave e obtém um valor – simples assim! • Os dados ficam, essencialmente, na memória RAM podendo ou não ser persistido em disco • Pode ser configurado para trabalhar em cluster • https://redis.io/
  • 5. Globalcode – Open4education Que mais? • Criado por Salvatore Sanfiippo • Open-source desde 2009 e codificado em C “puro” • Suporta estruturas de dados como: • Strings • Hashes • Listas • Conjuntos • Conjuntos classificados com consultas de intervalo • Bitmaps • Hiperloglogs • Índices geoespaciais com consultas radius
  • 6. Globalcode – Open4education Algo mais? • É blocante: • Só executa uma solicitação por vez • Isso é ótimo • Isso é ruim • Tem só que saber lidar com isso • Executa script Lua nos poupando o tráfego de dados • Não possui suporte oficial no Windows, apesar de ser possível usar: • https://github.com/MicrosoftArchive/redis/releases
  • 7. Globalcode – Open4education Problemas que podemos resolver • Armazenamento de sessão do DataSnap, provendo escalabilidade horizontal ao backend • Banco de dados local para operação off-line, como frente de caixa ou comunicação matriz e filial • É leve o suficiente para rodar em uma estação • É poderoso o suficiente para rodar em um servidor • Cacheamento lado servidor: o processamento mais rápido é aquele que não é feito • Viabilização de dashboards em tempo real • Mensageria entre os diversos artefatos de um ecossistema complexo: PUBSUB e Queue • Interoperabilidade entre plataformas heterógenas • Abordagem de micro serviços
  • 8. Globalcode – Open4education E no Delphi? • O Danielle Tetti desenvolveu uma ótima biblioteca: https://github.com/danieleteti/delphiredisclient • Instale pelo GetIt Package Manager
  • 9. Globalcode – Open4education RESTCLIENTE MENSAGERIA SERVIÇOHTTP STORAGE Macro esquema simplificado
  • 10. Globalcode – Open4education Principais comandos • O Redis é bem rico em opções • Os comandos triviais são: • GET – Retorna o valor de uma chave • SET – Atribui um valor à uma chave, com ou sem TTL (tempo de expiração da chave) • DEL – Deleta uma chave • KEYS – Lista as chaves de acordo com um padrão, podendo ser utilizado *, ? e []
  • 11. Globalcode – Open4education Demonstração  OPERAÇÕES BÁSICAS  TESTE DE STRESS  CONTROLE DE SESSÃO DO DATASNAP  CACHEAMENTO LADO SERVIDOR  ENFILEIRAMENTO  PUBLICAÇÃO E ASSINATURA  EXECUÇÃO DE UM SCRIPT LUA
  • 12. Globalcode – Open4education Exemplos práticos • Atenção: Se você for adotar uma estratégia de mensageria cogite o RabbitMQ • Os exemplos podem ser baixados do meu GitHub: https://github.com/jmarioguedes/TDC2018_REDIS • Para fazer telas mais bonitas do que as minhas: DESIGN DE INTERFACES EM DELPHI https://thuliobittencourt.eadbox.com/courses/design-de- interfaces-em-delphi
  • 13. Globalcode – Open4education Leituras interessantes • Intensive Delphi 2017 – E este tal de REDIS hein? Mario Guedes https://youtu.be/6kfPeO9d3bU • Mini Curso Gratuito Redis NoSQL Alexandre Lima https://www.portalgsti.com.br/cursos/mini-curso-gratuito-redis/ • Livro: Armazenando dados com Redis Rodrigo Lazoti https://www.casadocodigo.com.br/products/livro-redis • Livro: Introdução à linguagem Lua José Augusto N. G. Manzano https://novatec.com.br/livros/introducao-a-linguagem-lua/

Notas del editor

  1. Apresentação pessoal