SlideShare uma empresa Scribd logo
1 de 18
Mobile Days
2020
Realização Apoiado por:
Barba, cabelo e bigode com
REDIS
Mario Guedes
mario@arrayof.io
Em todas as redes sociais:
👉🏻 @jmarioguedes
Mario Guedes
😎 Consultor e instrutor pela ArrayOf.io
❤ Artesão de Software desde 1999
💻 Focado no backend das soluções
Está pensando em
desenvolver um app?
• Inovador?
• Intuitivo?
• Usabilidade nota 10?
• Lindo?
• Fora da caixinha?
• Enfim, disruptivo?
Mas e o seu backend?
• Uma coisa é ter 20, 30 usuários
acessando o seu banco.
• E 100, 200, 300 ... 1.000?
• Mas 1.000 é pouco ainda, queremos
dominar o mundo!
Qual é o desenho da sua
arquitetura?
☹ Cliente e servidor?
😁 Multicamadas?
🏻 Um banco de dados relacional?
😮 Vários bancos noSQL?
😎 RESTful? Microsserviços? Serverless?
REDIS (™) *
• O REDIS cabe em qualquer arquitetura
• Ser rápido é apenas a maior qualidade dele
• Ele resolve vários problemas relacionados à escalabilidade
• Cacheamento lado servidor
• Controle de sessão de usuário
• Mensageria entre processos (microsserviço)
• Dashboard em tempo real
• Ranking
• Rate limit
• Geoprocessamento
Barba, cabelo e bigode
3️⃣ Nesta apresentação mostraremos três casos de uso
📼 Temos outros vídeos em nosso canal, confira:
https://youtube.com/arrayof
👨🏻💻 Os fontes estão em:
https://bit.ly/redis_mb2020
🧔🧔 Barba: Cacheamento lado servidor
👨🧔🧔 Cabelo: Mensageria entre serviços
👨🧔🧔 Bigode: Dashboard em tempo real
Exemplos didáticos
• Para simplificar os exemplos desenvolvi um frontend acessando
diretamente o REDIS e PostgreSQL
• Obviamente que isto não parece correto: teríamo certamente um
serviço web intermediando o frontend e o backend
Frontend
REDIS
PostgreSQL
Recursos necessários
• Biblioteca de acesso ao REDIS
https://github.com/danieleteti/delphiredisclient
• REDIS
https://redis.io/
• REDIS no Windows
Tenta usar o Docker, vale a pena
• Versão defasada (Nativo Windows)
https://bit.ly/redis_windows
Caso de Uso #1 – Cacheamento Lado Servidor
Comandos
• GET – Retorna o conteúdo de uma chave
• SET – Escreve um conteúdo em uma chave
• EXPIRE – Determina o tempo de expiração de uma chave
• DEL – Elimina uma chave
E lembre-se: “O processamento mais rápido é aquele que não é feito”
Caso de Uso #2 – Mensageria entre Processos
Comandos
• LLEN – Retorna a quantidade de elementos de uma lista
• RPUSH – Enfileira um conteúdo em uma lista, no caso, uma fila
• BLPOP – Retira, e retorna, o primeiro elemento de uma lista
Aqui o “B” é de “block” no sentido de esperar por um elemento por x
tempo caso a fila esteja vazia
Esses dois comandos “transformam” uma lista em uma fila estilo FIFO:
n 3 2 1PRODUTOR CONSUMIDOR
RPUSH BLPOP
Caso de Uso #3 – Dashboard em Tempo Real
Comandos
• KEYS – Lista as chaves de acordo com o padrão passado
• ZADD – Adiciona um membro à uma chave do tipo conjunto
• ZINCRBY – Incrementa o valor associado à um membro do conjunto
• ZREVRANK – Devolve a colocação de um membro do conjunto
• ZSCORE – Devolve a pontuação de um membro do conjunto
• ZREVRANGE – Devolve a colocação e pontos de uma faixa do
conjunto
O ranqueamento no REDIS tira proveito do tipo “conjunto ordenado” e
por isso ZRANK e ZRANGE buscam os valores do menor para o maior.
Então utilizamos os comandos reversos: ZREVRANK e ZREVRANGE
Agradecido!
• Só mostrei três formas de se usar o REDIS.
• Existem várias outras possibilidades!
• Assine nossa newsletter: https://arrayof.io
• Fontes dos exemplos:
https://github.com/ArrayOf/mobiledays_2020_redis
• Vamos trocar ideias?
mario@arrayof.io
Créditos
• As imagens utilizadas nesta apresentação foram coletadas do site: https://unsplash.com
• Todos os direitos reservados
• Photo by UX Indonesia on Unsplash
• Photo by Isabela Kronemberger on Unsplash
• Photo by Bill Oxford on Unsplash
• Photo by Adam Sherez on Unsplash
* Redis é uma marca comercial da Redis Labs Ltd. Todos os direitos são reservados à Redis Labs Ltd. Qualquer uso por ArrayOf.io serve apenas
como referência e não indica qualquer patrocínio, endosso ou afiliação entre a Redis e a ArrayOf.io

Mais conteúdo relacionado

Semelhante a Apresentação sobre casos de uso do REDIS

Redis um banco chave valor
Redis um banco chave valorRedis um banco chave valor
Redis um banco chave valorKinn Julião
 
Desenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDBDesenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDBAri Stopassola Junior
 
NoSQL para Desenvolvedores .NET - SQLSaturday #804 - São Paulo
NoSQL para Desenvolvedores .NET - SQLSaturday #804 - São PauloNoSQL para Desenvolvedores .NET - SQLSaturday #804 - São Paulo
NoSQL para Desenvolvedores .NET - SQLSaturday #804 - São PauloRenato Groff
 
Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAThiago Cifani
 
Design Patterns on Rails
Design Patterns on RailsDesign Patterns on Rails
Design Patterns on Railstchandy
 
Interoperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadosInteroperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadospichiliani
 
Interoperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadosInteroperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadospichiliani
 
Voce se preocupa com performance ou é sempre problema da infra
Voce se preocupa com performance ou é sempre problema da infraVoce se preocupa com performance ou é sempre problema da infra
Voce se preocupa com performance ou é sempre problema da infraCDS
 
Escalabilidade com Redis
Escalabilidade com Redis Escalabilidade com Redis
Escalabilidade com Redis Mario Guedes
 
Docker | Minicurso Gratuito - Azure na Prática
Docker | Minicurso Gratuito - Azure na PráticaDocker | Minicurso Gratuito - Azure na Prática
Docker | Minicurso Gratuito - Azure na PráticaRenato Groff
 
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
 
NoSQL no Microsoft Azure - Global Azure Bootcamp 2017
NoSQL no Microsoft Azure - Global Azure Bootcamp 2017NoSQL no Microsoft Azure - Global Azure Bootcamp 2017
NoSQL no Microsoft Azure - Global Azure Bootcamp 2017Renato Groff
 
Mongodb praquer-usar-uaijugcloudday2014
Mongodb praquer-usar-uaijugcloudday2014Mongodb praquer-usar-uaijugcloudday2014
Mongodb praquer-usar-uaijugcloudday2014Rogerio Fontes
 
Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020
Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020
Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020Renato Groff
 
Como desenvolver com um sistema com um front-end colossal?
Como desenvolver com um sistema com um front-end colossal?Como desenvolver com um sistema com um front-end colossal?
Como desenvolver com um sistema com um front-end colossal?Mozart Diniz
 
NoSQL na nuvem com o Azure Cosmos DB - MVPConf 2018
NoSQL na nuvem com o Azure Cosmos DB - MVPConf 2018NoSQL na nuvem com o Azure Cosmos DB - MVPConf 2018
NoSQL na nuvem com o Azure Cosmos DB - MVPConf 2018Renato Groff
 
Introdução ao Rails (Linguagil)
Introdução ao Rails (Linguagil)Introdução ao Rails (Linguagil)
Introdução ao Rails (Linguagil)Daniel Lopes
 
Bdd rails 3
Bdd rails 3Bdd rails 3
Bdd rails 3tchandy
 
Docker para Desenvolvedores - Developers-BR - Julho-2018
Docker para Desenvolvedores - Developers-BR - Julho-2018Docker para Desenvolvedores - Developers-BR - Julho-2018
Docker para Desenvolvedores - Developers-BR - Julho-2018Renato Groff
 

Semelhante a Apresentação sobre casos de uso do REDIS (20)

Redis um banco chave valor
Redis um banco chave valorRedis um banco chave valor
Redis um banco chave valor
 
Desenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDBDesenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDB
 
NoSQL para Desenvolvedores .NET - SQLSaturday #804 - São Paulo
NoSQL para Desenvolvedores .NET - SQLSaturday #804 - São PauloNoSQL para Desenvolvedores .NET - SQLSaturday #804 - São Paulo
NoSQL para Desenvolvedores .NET - SQLSaturday #804 - São Paulo
 
Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVA
 
Design Patterns on Rails
Design Patterns on RailsDesign Patterns on Rails
Design Patterns on Rails
 
Interoperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadosInteroperabilidade entre bancos de dados
Interoperabilidade entre bancos de dados
 
Interoperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadosInteroperabilidade entre bancos de dados
Interoperabilidade entre bancos de dados
 
Voce se preocupa com performance ou é sempre problema da infra
Voce se preocupa com performance ou é sempre problema da infraVoce se preocupa com performance ou é sempre problema da infra
Voce se preocupa com performance ou é sempre problema da infra
 
Escalabilidade com Redis
Escalabilidade com Redis Escalabilidade com Redis
Escalabilidade com Redis
 
Docker | Minicurso Gratuito - Azure na Prática
Docker | Minicurso Gratuito - Azure na PráticaDocker | Minicurso Gratuito - Azure na Prática
Docker | Minicurso Gratuito - Azure na Prática
 
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?
 
NoSQL no Microsoft Azure - Global Azure Bootcamp 2017
NoSQL no Microsoft Azure - Global Azure Bootcamp 2017NoSQL no Microsoft Azure - Global Azure Bootcamp 2017
NoSQL no Microsoft Azure - Global Azure Bootcamp 2017
 
Mongodb praquer-usar-uaijugcloudday2014
Mongodb praquer-usar-uaijugcloudday2014Mongodb praquer-usar-uaijugcloudday2014
Mongodb praquer-usar-uaijugcloudday2014
 
Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020
Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020
Docker: visão geral, possibilidades e primeiros passos - UNIVAG - Junho-2020
 
Palestra nosql
Palestra nosqlPalestra nosql
Palestra nosql
 
Como desenvolver com um sistema com um front-end colossal?
Como desenvolver com um sistema com um front-end colossal?Como desenvolver com um sistema com um front-end colossal?
Como desenvolver com um sistema com um front-end colossal?
 
NoSQL na nuvem com o Azure Cosmos DB - MVPConf 2018
NoSQL na nuvem com o Azure Cosmos DB - MVPConf 2018NoSQL na nuvem com o Azure Cosmos DB - MVPConf 2018
NoSQL na nuvem com o Azure Cosmos DB - MVPConf 2018
 
Introdução ao Rails (Linguagil)
Introdução ao Rails (Linguagil)Introdução ao Rails (Linguagil)
Introdução ao Rails (Linguagil)
 
Bdd rails 3
Bdd rails 3Bdd rails 3
Bdd rails 3
 
Docker para Desenvolvedores - Developers-BR - Julho-2018
Docker para Desenvolvedores - Developers-BR - Julho-2018Docker para Desenvolvedores - Developers-BR - Julho-2018
Docker para Desenvolvedores - Developers-BR - Julho-2018
 

Apresentação sobre casos de uso do REDIS

  • 1. Mobile Days 2020 Realização Apoiado por: Barba, cabelo e bigode com REDIS Mario Guedes mario@arrayof.io
  • 2. Em todas as redes sociais: 👉🏻 @jmarioguedes Mario Guedes 😎 Consultor e instrutor pela ArrayOf.io ❤ Artesão de Software desde 1999 💻 Focado no backend das soluções
  • 3. Está pensando em desenvolver um app? • Inovador? • Intuitivo? • Usabilidade nota 10? • Lindo? • Fora da caixinha? • Enfim, disruptivo?
  • 4. Mas e o seu backend? • Uma coisa é ter 20, 30 usuários acessando o seu banco. • E 100, 200, 300 ... 1.000? • Mas 1.000 é pouco ainda, queremos dominar o mundo!
  • 5. Qual é o desenho da sua arquitetura? ☹ Cliente e servidor? 😁 Multicamadas? 🏻 Um banco de dados relacional? 😮 Vários bancos noSQL? 😎 RESTful? Microsserviços? Serverless?
  • 6. REDIS (™) * • O REDIS cabe em qualquer arquitetura • Ser rápido é apenas a maior qualidade dele • Ele resolve vários problemas relacionados à escalabilidade • Cacheamento lado servidor • Controle de sessão de usuário • Mensageria entre processos (microsserviço) • Dashboard em tempo real • Ranking • Rate limit • Geoprocessamento
  • 7.
  • 8. Barba, cabelo e bigode 3️⃣ Nesta apresentação mostraremos três casos de uso 📼 Temos outros vídeos em nosso canal, confira: https://youtube.com/arrayof 👨🏻💻 Os fontes estão em: https://bit.ly/redis_mb2020 🧔🧔 Barba: Cacheamento lado servidor 👨🧔🧔 Cabelo: Mensageria entre serviços 👨🧔🧔 Bigode: Dashboard em tempo real
  • 9. Exemplos didáticos • Para simplificar os exemplos desenvolvi um frontend acessando diretamente o REDIS e PostgreSQL • Obviamente que isto não parece correto: teríamo certamente um serviço web intermediando o frontend e o backend Frontend REDIS PostgreSQL
  • 10. Recursos necessários • Biblioteca de acesso ao REDIS https://github.com/danieleteti/delphiredisclient • REDIS https://redis.io/ • REDIS no Windows Tenta usar o Docker, vale a pena • Versão defasada (Nativo Windows) https://bit.ly/redis_windows
  • 11. Caso de Uso #1 – Cacheamento Lado Servidor
  • 12. Comandos • GET – Retorna o conteúdo de uma chave • SET – Escreve um conteúdo em uma chave • EXPIRE – Determina o tempo de expiração de uma chave • DEL – Elimina uma chave E lembre-se: “O processamento mais rápido é aquele que não é feito”
  • 13. Caso de Uso #2 – Mensageria entre Processos
  • 14. Comandos • LLEN – Retorna a quantidade de elementos de uma lista • RPUSH – Enfileira um conteúdo em uma lista, no caso, uma fila • BLPOP – Retira, e retorna, o primeiro elemento de uma lista Aqui o “B” é de “block” no sentido de esperar por um elemento por x tempo caso a fila esteja vazia Esses dois comandos “transformam” uma lista em uma fila estilo FIFO: n 3 2 1PRODUTOR CONSUMIDOR RPUSH BLPOP
  • 15. Caso de Uso #3 – Dashboard em Tempo Real
  • 16. Comandos • KEYS – Lista as chaves de acordo com o padrão passado • ZADD – Adiciona um membro à uma chave do tipo conjunto • ZINCRBY – Incrementa o valor associado à um membro do conjunto • ZREVRANK – Devolve a colocação de um membro do conjunto • ZSCORE – Devolve a pontuação de um membro do conjunto • ZREVRANGE – Devolve a colocação e pontos de uma faixa do conjunto O ranqueamento no REDIS tira proveito do tipo “conjunto ordenado” e por isso ZRANK e ZRANGE buscam os valores do menor para o maior. Então utilizamos os comandos reversos: ZREVRANK e ZREVRANGE
  • 17. Agradecido! • Só mostrei três formas de se usar o REDIS. • Existem várias outras possibilidades! • Assine nossa newsletter: https://arrayof.io • Fontes dos exemplos: https://github.com/ArrayOf/mobiledays_2020_redis • Vamos trocar ideias? mario@arrayof.io
  • 18. Créditos • As imagens utilizadas nesta apresentação foram coletadas do site: https://unsplash.com • Todos os direitos reservados • Photo by UX Indonesia on Unsplash • Photo by Isabela Kronemberger on Unsplash • Photo by Bill Oxford on Unsplash • Photo by Adam Sherez on Unsplash * Redis é uma marca comercial da Redis Labs Ltd. Todos os direitos são reservados à Redis Labs Ltd. Qualquer uso por ArrayOf.io serve apenas como referência e não indica qualquer patrocínio, endosso ou afiliação entre a Redis e a ArrayOf.io