SlideShare uma empresa 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

Mais conteúdo relacionado

Mais procurados

仮想化技術によるマルウェア対策とその問題点
仮想化技術によるマルウェア対策とその問題点仮想化技術によるマルウェア対策とその問題点
仮想化技術によるマルウェア対策とその問題点Kuniyasu Suzaki
 
Man-in-the-Middle Attack for SSH with Scala and JSch
Man-in-the-Middle Attack for SSH with Scala and JSchMan-in-the-Middle Attack for SSH with Scala and JSch
Man-in-the-Middle Attack for SSH with Scala and JSchAtsuhiko Yamanaka
 
PHP と SAPI と ZendEngine3 と
PHP と SAPI と ZendEngine3 とPHP と SAPI と ZendEngine3 と
PHP と SAPI と ZendEngine3 とdo_aki
 
オープンソースで提供される第二のJVM:OpenJ9 VMとIBM Javaについて
オープンソースで提供される第二のJVM:OpenJ9 VMとIBM Javaについてオープンソースで提供される第二のJVM:OpenJ9 VMとIBM Javaについて
オープンソースで提供される第二のJVM:OpenJ9 VMとIBM JavaについてTakakiyo Tanaka
 
#jjug_ccc #ccc_f1 広告システム刷新の舞台裏 - PHPからJavaに変えてみました
#jjug_ccc #ccc_f1 広告システム刷新の舞台裏 - PHPからJavaに変えてみました#jjug_ccc #ccc_f1 広告システム刷新の舞台裏 - PHPからJavaに変えてみました
#jjug_ccc #ccc_f1 広告システム刷新の舞台裏 - PHPからJavaに変えてみましたYahoo!デベロッパーネットワーク
 
JJUG CCC 2014 Spring IBM SDK for Java 8の全貌 #jjug_ccc #ccc_r57
JJUG CCC 2014 Spring IBM SDK for Java 8の全貌 #jjug_ccc #ccc_r57JJUG CCC 2014 Spring IBM SDK for Java 8の全貌 #jjug_ccc #ccc_r57
JJUG CCC 2014 Spring IBM SDK for Java 8の全貌 #jjug_ccc #ccc_r57Takakiyo Tanaka
 
システムコールフックを使用した攻撃検出
システムコールフックを使用した攻撃検出システムコールフックを使用した攻撃検出
システムコールフックを使用した攻撃検出FFRI, Inc.
 
Open Liberty: オープンソースになったWebSphere Liberty
Open Liberty: オープンソースになったWebSphere LibertyOpen Liberty: オープンソースになったWebSphere Liberty
Open Liberty: オープンソースになったWebSphere LibertyTakakiyo Tanaka
 
Spring CloudとZipkinを利用した分散トレーシング
Spring CloudとZipkinを利用した分散トレーシングSpring CloudとZipkinを利用した分散トレーシング
Spring CloudとZipkinを利用した分散トレーシングRakuten Group, Inc.
 
UnboundとDNSSEC(OSC2011 Tokyo/Spring)
UnboundとDNSSEC(OSC2011 Tokyo/Spring)UnboundとDNSSEC(OSC2011 Tokyo/Spring)
UnboundとDNSSEC(OSC2011 Tokyo/Spring)Takashi Takizawa
 
オープンソースライセンスの基礎と実務
オープンソースライセンスの基礎と実務オープンソースライセンスの基礎と実務
オープンソースライセンスの基礎と実務Yutaka Kachi
 
フラッター開発におけるシークレット情報取扱考察
フラッター開発におけるシークレット情報取扱考察フラッター開発におけるシークレット情報取扱考察
フラッター開発におけるシークレット情報取扱考察cch-robo
 
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法Hiroshi Yoshida
 
【ヒカラボ】RDS for MySQL → Aurora
【ヒカラボ】RDS for MySQL → Aurora【ヒカラボ】RDS for MySQL → Aurora
【ヒカラボ】RDS for MySQL → AuroraYuki Kanazawa
 
20211118 dbts2021 マイクロサービスにおけるApache Geodeの効果的な使い方
20211118 dbts2021 マイクロサービスにおけるApache Geodeの効果的な使い方20211118 dbts2021 マイクロサービスにおけるApache Geodeの効果的な使い方
20211118 dbts2021 マイクロサービスにおけるApache Geodeの効果的な使い方Masaki Yamakawa
 
Oracle jdk 20190827 - 今、あらためてOracle提供のJDKを語る
Oracle jdk 20190827 - 今、あらためてOracle提供のJDKを語るOracle jdk 20190827 - 今、あらためてOracle提供のJDKを語る
Oracle jdk 20190827 - 今、あらためてOracle提供のJDKを語るオラクルエンジニア通信
 
Java SE 8 lambdaで変わる プログラミングスタイル
Java SE 8 lambdaで変わる プログラミングスタイルJava SE 8 lambdaで変わる プログラミングスタイル
Java SE 8 lambdaで変わる プログラミングスタイルなおき きしだ
 
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発Yahoo!デベロッパーネットワーク
 

Mais procurados (20)

仮想化技術によるマルウェア対策とその問題点
仮想化技術によるマルウェア対策とその問題点仮想化技術によるマルウェア対策とその問題点
仮想化技術によるマルウェア対策とその問題点
 
Man-in-the-Middle Attack for SSH with Scala and JSch
Man-in-the-Middle Attack for SSH with Scala and JSchMan-in-the-Middle Attack for SSH with Scala and JSch
Man-in-the-Middle Attack for SSH with Scala and JSch
 
PHP と SAPI と ZendEngine3 と
PHP と SAPI と ZendEngine3 とPHP と SAPI と ZendEngine3 と
PHP と SAPI と ZendEngine3 と
 
オープンソースで提供される第二のJVM:OpenJ9 VMとIBM Javaについて
オープンソースで提供される第二のJVM:OpenJ9 VMとIBM Javaについてオープンソースで提供される第二のJVM:OpenJ9 VMとIBM Javaについて
オープンソースで提供される第二のJVM:OpenJ9 VMとIBM Javaについて
 
#jjug_ccc #ccc_f1 広告システム刷新の舞台裏 - PHPからJavaに変えてみました
#jjug_ccc #ccc_f1 広告システム刷新の舞台裏 - PHPからJavaに変えてみました#jjug_ccc #ccc_f1 広告システム刷新の舞台裏 - PHPからJavaに変えてみました
#jjug_ccc #ccc_f1 広告システム刷新の舞台裏 - PHPからJavaに変えてみました
 
JJUG CCC 2014 Spring IBM SDK for Java 8の全貌 #jjug_ccc #ccc_r57
JJUG CCC 2014 Spring IBM SDK for Java 8の全貌 #jjug_ccc #ccc_r57JJUG CCC 2014 Spring IBM SDK for Java 8の全貌 #jjug_ccc #ccc_r57
JJUG CCC 2014 Spring IBM SDK for Java 8の全貌 #jjug_ccc #ccc_r57
 
システムコールフックを使用した攻撃検出
システムコールフックを使用した攻撃検出システムコールフックを使用した攻撃検出
システムコールフックを使用した攻撃検出
 
Open Liberty: オープンソースになったWebSphere Liberty
Open Liberty: オープンソースになったWebSphere LibertyOpen Liberty: オープンソースになったWebSphere Liberty
Open Liberty: オープンソースになったWebSphere Liberty
 
Spring CloudとZipkinを利用した分散トレーシング
Spring CloudとZipkinを利用した分散トレーシングSpring CloudとZipkinを利用した分散トレーシング
Spring CloudとZipkinを利用した分散トレーシング
 
UnboundとDNSSEC(OSC2011 Tokyo/Spring)
UnboundとDNSSEC(OSC2011 Tokyo/Spring)UnboundとDNSSEC(OSC2011 Tokyo/Spring)
UnboundとDNSSEC(OSC2011 Tokyo/Spring)
 
オープンソースライセンスの基礎と実務
オープンソースライセンスの基礎と実務オープンソースライセンスの基礎と実務
オープンソースライセンスの基礎と実務
 
フラッター開発におけるシークレット情報取扱考察
フラッター開発におけるシークレット情報取扱考察フラッター開発におけるシークレット情報取扱考察
フラッター開発におけるシークレット情報取扱考察
 
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
 
キメるClojure
キメるClojureキメるClojure
キメるClojure
 
メッチャ役に立つauto_incrementの話
メッチャ役に立つauto_incrementの話メッチャ役に立つauto_incrementの話
メッチャ役に立つauto_incrementの話
 
【ヒカラボ】RDS for MySQL → Aurora
【ヒカラボ】RDS for MySQL → Aurora【ヒカラボ】RDS for MySQL → Aurora
【ヒカラボ】RDS for MySQL → Aurora
 
20211118 dbts2021 マイクロサービスにおけるApache Geodeの効果的な使い方
20211118 dbts2021 マイクロサービスにおけるApache Geodeの効果的な使い方20211118 dbts2021 マイクロサービスにおけるApache Geodeの効果的な使い方
20211118 dbts2021 マイクロサービスにおけるApache Geodeの効果的な使い方
 
Oracle jdk 20190827 - 今、あらためてOracle提供のJDKを語る
Oracle jdk 20190827 - 今、あらためてOracle提供のJDKを語るOracle jdk 20190827 - 今、あらためてOracle提供のJDKを語る
Oracle jdk 20190827 - 今、あらためてOracle提供のJDKを語る
 
Java SE 8 lambdaで変わる プログラミングスタイル
Java SE 8 lambdaで変わる プログラミングスタイルJava SE 8 lambdaで変わる プログラミングスタイル
Java SE 8 lambdaで変わる プログラミングスタイル
 
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
 

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

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?Mario Guedes
 
Turbinando o seu sistema com Redis!
Turbinando o seu sistema com Redis!Turbinando o seu sistema com Redis!
Turbinando o seu sistema com Redis!Mario Guedes
 
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...tdc-globalcode
 
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 MongoDBMario Guedes
 
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...Kelver Merlotti
 
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?Mario Guedes
 
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á...Mario Guedes
 
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 ...tdc-globalcode
 
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...Renato Groff
 
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 FlowRicardo Longa
 
Escalabilidade com Redis
Escalabilidade com Redis Escalabilidade com Redis
Escalabilidade com Redis Mario Guedes
 
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 codeEduardo Rozario
 
Data Vault - TDC 2020 Porto Alegre
Data Vault - TDC 2020 Porto AlegreData Vault - TDC 2020 Porto Alegre
Data Vault - TDC 2020 Porto AlegreSergio Lima
 
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...Luiz Henrique Zambom Santana
 
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 OpenSourcetdc-globalcode
 
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çouJose Wilker
 
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 PHPRodrigo Dos Santos
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHPFelipe Ribeiro
 

Semelhante 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
 

Mais de Mario Guedes

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 SummitMario Guedes
 
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 REDISMario Guedes
 
Integrando-se à Blockchain da Ethereum
Integrando-se à Blockchain da EthereumIntegrando-se à Blockchain da Ethereum
Integrando-se à Blockchain da EthereumMario Guedes
 
Entendendo HTTP para entender o REST
Entendendo HTTP para entender o RESTEntendendo HTTP para entender o REST
Entendendo HTTP para entender o RESTMario Guedes
 
Expressão Regular - Cookbook
Expressão Regular - CookbookExpressão Regular - Cookbook
Expressão Regular - CookbookMario Guedes
 
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 MapsMario Guedes
 
Foco no app, viva o serverless!
Foco no app, viva o serverless!Foco no app, viva o serverless!
Foco no app, viva o serverless!Mario Guedes
 
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 MapsMario Guedes
 
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!Mario Guedes
 
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 RedisMario Guedes
 
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 DelphiMario Guedes
 
BOT: Conversando com o seu sistema
BOT: Conversando com o seu sistemaBOT: Conversando com o seu sistema
BOT: Conversando com o seu sistemaMario Guedes
 
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...Mario Guedes
 
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áriosMario Guedes
 
Big data da teoria à prática
Big data  da teoria à práticaBig data  da teoria à prática
Big data da teoria à práticaMario Guedes
 
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/JSONMario Guedes
 
Delphi Parallel Programming Library
Delphi Parallel Programming LibraryDelphi Parallel Programming Library
Delphi Parallel Programming LibraryMario Guedes
 
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 Mario Guedes
 
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 2015Mario Guedes
 
Cacheamento Lado Servidor
Cacheamento Lado ServidorCacheamento Lado Servidor
Cacheamento Lado ServidorMario Guedes
 

Mais 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 do Editor

  1. Apresentação pessoal