SlideShare uma empresa Scribd logo
1 de 36
About me ;D
Charles Lomboni
Desenvolvedor .NET na MundiPagg
Desenvolvedor .NET e SharePoint, entusiasta por segurança, tecnologias e
música. Desde 2009 vem adquirindo experiência em diversos desafios.
Reconhecido por alguns prêmios como o Jaccques Franquelin Award 2013,
com o sistema Techchannel, um “youtube” para ensino, feito em Sharepoint.
Atualmente faz parte do time Authorizer da MundiPagg/Stone, onde se diverte
todo dia programando.
Contato: charleslomboni@gmail.com
Um pouco da mundi/stone <3
Hub de eventos com
O que é Redis?
Uma estrutura de dados na memória, categorizado como
banco de dados não relacional – NoSQL (Not Only SQL).
Ele oferece suporte a estruturas como strings, hashes,
lists, sets, sorted sets com intervalos de consultas,
bitmaps, hyperloglogs e geospatial indexes. Oferece
replicação nativa, scripts lua, LRU eviction, transações,
pub/sub e diferentes níveis de persistência em disco.
Tipos de estruturas ;)
string[] operationSystem =
{ “Windows”, “Linux”, “Mac” };
Porque usar Redis?
Porque não usar Redis?
Eles usam ;P
var motivacao = “Utilizar o Redis para
armazenar e recuperar dados em memória para
um cenário real e, utilizar os recursos
de PUBLISH e SUBSCRIBE para comunicar
assincronamente mensagens entre cliente e
servidor, criando assim, um Hub de eventos.”
/*
só teoria não né?
Obrigado!
*/
Pasta do Redis
redis-server
redis-cli
Armazenamento SET
Redis-cli
127.0.0.1:6379> SET minhaChave "meu valor"
OK
127.0.0.1:6379> GET minhaChave
"meu valor"
Código C#
redisClient.SetAsync(redisKey, "Redis no .NET!!! Mandando bala!").Wait();
Console.WriteLine("Chave {0} criada com sucesso!", redisKey);
var redisReturn = redisClient.GetAsync(redisKey).Result.As<string>();
Console.WriteLine("Valor {0} da chave {1} criada com sucesso!", redisReturn,
redisKey);
Armazenamento DEL
Redis-cli
127.0.0.1:6379> DEL minhaChave
(integer) 1
Código C#
redisClient.SetAsync(redisKeyDelete, "RedisBoost Delete key.").Wait();
Console.WriteLine("Chave {0} criada para ser deletada...", redisKeyDelete);
var resultDelete = redisClient.DelAsync(redisKeyDelete).Result;
Console.WriteLine("Chave {0} foi deletada? {1}", redisKeyDelete, Convert.ToBoolean(resultDelete));
$”{usando no mundo real}”
Casos reais para uso do Redis { aqui a parada é séria mermão ;D }
• Mostrar os últimos itens da sua página
• Deletar e filtrar
• Odernar por votos de usuários e tempo
• Implementar tempo para expirar
• Assegurar unicidade para N itens
• Análise real de o que está acontecendo
•Publish/Subscribe
• Filas
Referência: http://highscalability.com/blog/2011/7/6/11-common-web-use-cases-solved-in-redis.html
Agora vem
Pub/Sub no Redis
Pub/Sub no Redis nada mais é que um “Observer” Design Pattern
Pub/Sub <3
Assinando canais
127.0.0.1:6379> SUBSCRIBE nomeDoCanal
127.0.0.1:6379> SUBSCRIBE musica
127.0.0.1:6379> SUBSCRIBE tecnologia
127.0.0.1:6379> PSUBSCRIBE *
Publicando mensagens
127.0.0.1:6379> PUBLISH nomeDoCanal mensagem
127.0.0.1:6379> PUBLISH musica “Eh o tchan no havai”
127.0.0.1:6379> PUBLISH tecnologia “Redis eh bacana! :D”
127.0.0.1:6379> PUBLISH esseCanalNaoExiste “So o fofoqueiro escuta isso..”
Assinando canais
Assinando canais
Assinando canais
Publicando mensagens
$”{usando no mundo real ²}”
Casos reais parte 2
• Newsletter
• Chat
• Carrinho de compra
•Sua imaginação??
var mundipagg = new Mochileiros {
NossaStack = "Nós também usamos Redis :)"
};
/* mais motivos para usar? */
• Independe de tecnologia
• Fast and furious
• Desacopla a aplicação
• Escalonável
• Realiza a ingestão de milhares de registros por segundo
• Transmitir para vários aplicativos
• Trabalho assíncrono
• Trabalha como ingestor de eventos
• Uma camada/aplicação, não precisa conhecer o que a outra faz
Knowledge Sharing
• https://charleslomboni.wordpress.com/2016/08/12/hub-de-eventos-com-redis/
• https://github.com/charleslomboni/Exemplos-Redis
FINISH HIM

Mais conteúdo relacionado

Destaque

The Meisner Law Group - Community Association Seminar
The Meisner Law Group - Community Association SeminarThe Meisner Law Group - Community Association Seminar
The Meisner Law Group - Community Association SeminarRobert M. Meisner
 
Clasificador prep rec_y_egr_2012
Clasificador prep rec_y_egr_2012Clasificador prep rec_y_egr_2012
Clasificador prep rec_y_egr_2012Eliangela Bonia
 
Phỏng vấn học viên tại trường Anh ngữ UV ESL
Phỏng vấn học viên tại trường Anh ngữ UV ESLPhỏng vấn học viên tại trường Anh ngữ UV ESL
Phỏng vấn học viên tại trường Anh ngữ UV ESLMYD Vietnam
 
IDENTIFIKASI KEJADIAN RISIKO TINGGI PADA IBU HAMIL DI PUSKESMAS KATOBU KABUPA...
IDENTIFIKASI KEJADIAN RISIKO TINGGI PADA IBU HAMIL DI PUSKESMAS KATOBU KABUPA...IDENTIFIKASI KEJADIAN RISIKO TINGGI PADA IBU HAMIL DI PUSKESMAS KATOBU KABUPA...
IDENTIFIKASI KEJADIAN RISIKO TINGGI PADA IBU HAMIL DI PUSKESMAS KATOBU KABUPA...Warnet Raha
 
Search-Based Software Project Scheduling
Search-Based Software Project SchedulingSearch-Based Software Project Scheduling
Search-Based Software Project Schedulingjfrchicanog
 
Freire pedagogia del oprimido
Freire pedagogia del oprimidoFreire pedagogia del oprimido
Freire pedagogia del oprimidoAminta Carrillo
 

Destaque (10)

The Meisner Law Group - Community Association Seminar
The Meisner Law Group - Community Association SeminarThe Meisner Law Group - Community Association Seminar
The Meisner Law Group - Community Association Seminar
 
Clasificador prep rec_y_egr_2012
Clasificador prep rec_y_egr_2012Clasificador prep rec_y_egr_2012
Clasificador prep rec_y_egr_2012
 
Prisao preventiva
Prisao preventiva Prisao preventiva
Prisao preventiva
 
Phỏng vấn học viên tại trường Anh ngữ UV ESL
Phỏng vấn học viên tại trường Anh ngữ UV ESLPhỏng vấn học viên tại trường Anh ngữ UV ESL
Phỏng vấn học viên tại trường Anh ngữ UV ESL
 
Global Warming
Global WarmingGlobal Warming
Global Warming
 
IDENTIFIKASI KEJADIAN RISIKO TINGGI PADA IBU HAMIL DI PUSKESMAS KATOBU KABUPA...
IDENTIFIKASI KEJADIAN RISIKO TINGGI PADA IBU HAMIL DI PUSKESMAS KATOBU KABUPA...IDENTIFIKASI KEJADIAN RISIKO TINGGI PADA IBU HAMIL DI PUSKESMAS KATOBU KABUPA...
IDENTIFIKASI KEJADIAN RISIKO TINGGI PADA IBU HAMIL DI PUSKESMAS KATOBU KABUPA...
 
Search-Based Software Project Scheduling
Search-Based Software Project SchedulingSearch-Based Software Project Scheduling
Search-Based Software Project Scheduling
 
Freire pedagogia del oprimido
Freire pedagogia del oprimidoFreire pedagogia del oprimido
Freire pedagogia del oprimido
 
Mini
MiniMini
Mini
 
3. Hadoop
3.  Hadoop3.  Hadoop
3. Hadoop
 

Semelhante a FEUCTEC 2016 - Hub de eventos com redis

Visual Studio 2010 e C# 4
Visual Studio 2010 e C# 4Visual Studio 2010 e C# 4
Visual Studio 2010 e C# 4CDS
 
Evolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual BasicEvolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual BasicRicardo Guerra Freitas
 
RedGate .NET Reflector
RedGate .NET ReflectorRedGate .NET Reflector
RedGate .NET ReflectorNuno Gomes
 
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
 
Monitorando os Recursos e Processos do Servidor, através do Power BI
Monitorando os Recursos e Processos do Servidor, através do Power BIMonitorando os Recursos e Processos do Servidor, através do Power BI
Monitorando os Recursos e Processos do Servidor, através do Power BISulamita Dantas
 
Memórias das trincheiras (parte 2)
Memórias das trincheiras (parte 2)Memórias das trincheiras (parte 2)
Memórias das trincheiras (parte 2)Elton Minetto
 
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaTécnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaAlexandre Tarifa
 
Arquitetando Soluções de Dados com PostgreSQL
Arquitetando Soluções de Dados com PostgreSQLArquitetando Soluções de Dados com PostgreSQL
Arquitetando Soluções de Dados com PostgreSQLRaul Oliveira
 
Entendendo Frameworks web com Python
Entendendo Frameworks web com PythonEntendendo Frameworks web com Python
Entendendo Frameworks web com PythonLuiz Aldabalde
 
Entendendo Framework Web com Python
Entendendo Framework Web com PythonEntendendo Framework Web com Python
Entendendo Framework Web com PythonPythOnRio
 
SQLServerDF XIII - xEvents
SQLServerDF XIII - xEventsSQLServerDF XIII - xEvents
SQLServerDF XIII - xEventsLuciano Moreira
 
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
 

Semelhante a FEUCTEC 2016 - Hub de eventos com redis (20)

Visual Studio 2010 e C# 4
Visual Studio 2010 e C# 4Visual Studio 2010 e C# 4
Visual Studio 2010 e C# 4
 
Evolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual BasicEvolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual Basic
 
Introdução Ruby 1.8.7 + Rails 3
Introdução Ruby 1.8.7 + Rails 3Introdução Ruby 1.8.7 + Rails 3
Introdução Ruby 1.8.7 + Rails 3
 
Oficial
OficialOficial
Oficial
 
RedGate .NET Reflector
RedGate .NET ReflectorRedGate .NET Reflector
RedGate .NET Reflector
 
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
 
Jj08 otimizacao
Jj08 otimizacaoJj08 otimizacao
Jj08 otimizacao
 
MongoDB + PHP
MongoDB + PHPMongoDB + PHP
MongoDB + PHP
 
Monitorando os Recursos e Processos do Servidor, através do Power BI
Monitorando os Recursos e Processos do Servidor, através do Power BIMonitorando os Recursos e Processos do Servidor, através do Power BI
Monitorando os Recursos e Processos do Servidor, através do Power BI
 
Cs 2
Cs 2Cs 2
Cs 2
 
Memórias das trincheiras (parte 2)
Memórias das trincheiras (parte 2)Memórias das trincheiras (parte 2)
Memórias das trincheiras (parte 2)
 
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
 
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaTécnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
 
Arquitetando Soluções de Dados com PostgreSQL
Arquitetando Soluções de Dados com PostgreSQLArquitetando Soluções de Dados com PostgreSQL
Arquitetando Soluções de Dados com PostgreSQL
 
Entendendo Frameworks web com Python
Entendendo Frameworks web com PythonEntendendo Frameworks web com Python
Entendendo Frameworks web com Python
 
Entendendo Framework Web com Python
Entendendo Framework Web com PythonEntendendo Framework Web com Python
Entendendo Framework Web com Python
 
SQLServerDF XIII - xEvents
SQLServerDF XIII - xEventsSQLServerDF XIII - xEvents
SQLServerDF XIII - xEvents
 
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
 

FEUCTEC 2016 - Hub de eventos com redis

  • 1.
  • 2. About me ;D Charles Lomboni Desenvolvedor .NET na MundiPagg Desenvolvedor .NET e SharePoint, entusiasta por segurança, tecnologias e música. Desde 2009 vem adquirindo experiência em diversos desafios. Reconhecido por alguns prêmios como o Jaccques Franquelin Award 2013, com o sistema Techchannel, um “youtube” para ensino, feito em Sharepoint. Atualmente faz parte do time Authorizer da MundiPagg/Stone, onde se diverte todo dia programando. Contato: charleslomboni@gmail.com
  • 3. Um pouco da mundi/stone <3
  • 5. O que é Redis? Uma estrutura de dados na memória, categorizado como banco de dados não relacional – NoSQL (Not Only SQL). Ele oferece suporte a estruturas como strings, hashes, lists, sets, sorted sets com intervalos de consultas, bitmaps, hyperloglogs e geospatial indexes. Oferece replicação nativa, scripts lua, LRU eviction, transações, pub/sub e diferentes níveis de persistência em disco.
  • 7. string[] operationSystem = { “Windows”, “Linux”, “Mac” };
  • 11. var motivacao = “Utilizar o Redis para armazenar e recuperar dados em memória para um cenário real e, utilizar os recursos de PUBLISH e SUBSCRIBE para comunicar assincronamente mensagens entre cliente e servidor, criando assim, um Hub de eventos.”
  • 12. /* só teoria não né? Obrigado! */
  • 16. Armazenamento SET Redis-cli 127.0.0.1:6379> SET minhaChave "meu valor" OK 127.0.0.1:6379> GET minhaChave "meu valor" Código C# redisClient.SetAsync(redisKey, "Redis no .NET!!! Mandando bala!").Wait(); Console.WriteLine("Chave {0} criada com sucesso!", redisKey); var redisReturn = redisClient.GetAsync(redisKey).Result.As<string>(); Console.WriteLine("Valor {0} da chave {1} criada com sucesso!", redisReturn, redisKey);
  • 17. Armazenamento DEL Redis-cli 127.0.0.1:6379> DEL minhaChave (integer) 1 Código C# redisClient.SetAsync(redisKeyDelete, "RedisBoost Delete key.").Wait(); Console.WriteLine("Chave {0} criada para ser deletada...", redisKeyDelete); var resultDelete = redisClient.DelAsync(redisKeyDelete).Result; Console.WriteLine("Chave {0} foi deletada? {1}", redisKeyDelete, Convert.ToBoolean(resultDelete));
  • 19. Casos reais para uso do Redis { aqui a parada é séria mermão ;D } • Mostrar os últimos itens da sua página • Deletar e filtrar • Odernar por votos de usuários e tempo • Implementar tempo para expirar • Assegurar unicidade para N itens • Análise real de o que está acontecendo •Publish/Subscribe • Filas Referência: http://highscalability.com/blog/2011/7/6/11-common-web-use-cases-solved-in-redis.html
  • 22. Pub/Sub no Redis nada mais é que um “Observer” Design Pattern
  • 24. Assinando canais 127.0.0.1:6379> SUBSCRIBE nomeDoCanal 127.0.0.1:6379> SUBSCRIBE musica 127.0.0.1:6379> SUBSCRIBE tecnologia 127.0.0.1:6379> PSUBSCRIBE *
  • 25. Publicando mensagens 127.0.0.1:6379> PUBLISH nomeDoCanal mensagem 127.0.0.1:6379> PUBLISH musica “Eh o tchan no havai” 127.0.0.1:6379> PUBLISH tecnologia “Redis eh bacana! :D” 127.0.0.1:6379> PUBLISH esseCanalNaoExiste “So o fofoqueiro escuta isso..”
  • 30. $”{usando no mundo real ²}”
  • 31. Casos reais parte 2 • Newsletter • Chat • Carrinho de compra •Sua imaginação??
  • 32. var mundipagg = new Mochileiros { NossaStack = "Nós também usamos Redis :)" };
  • 33. /* mais motivos para usar? */ • Independe de tecnologia • Fast and furious • Desacopla a aplicação • Escalonável • Realiza a ingestão de milhares de registros por segundo • Transmitir para vários aplicativos • Trabalho assíncrono • Trabalha como ingestor de eventos • Uma camada/aplicação, não precisa conhecer o que a outra faz
  • 35.

Notas do Editor

  1. Ale – 15 minutos
  2. Ale – 15 minutos
  3. Ale – 15 minutos
  4. Ale – 15 minutos
  5. Ale – 15 minutos
  6. Ale – 15 minutos
  7. Ale – 15 minutos
  8. Ale – 15 minutos
  9. Ale – 15 minutos
  10. Ale – 15 minutos
  11. Ale – 15 minutos
  12. Ale – 15 minutos
  13. Ale – 15 minutos
  14. Ale – 15 minutos
  15. Ale – 15 minutos
  16. Ale – 15 minutos
  17. Ale – 15 minutos
  18. Ale – 15 minutos
  19. Ale – 15 minutos
  20. Ale – 15 minutos
  21. Ale – 15 minutos
  22. Ale – 15 minutos
  23. Ale – 15 minutos
  24. Ale – 15 minutos
  25. Ale – 15 minutos
  26. Ale – 15 minutos
  27. Ale – 15 minutos
  28. Ale – 15 minutos
  29. Ale – 15 minutos
  30. Ale – 15 minutos
  31. Ale – 15 minutos