FEUCTEC 2016 - Hub de eventos com redis

36

Transcript of FEUCTEC 2016 - Hub de eventos com redis

Page 1: FEUCTEC 2016 - Hub de eventos com redis
Page 2: FEUCTEC 2016 - Hub de eventos com redis

About me ;DCharles LomboniDesenvolvedor .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: [email protected]

Page 3: FEUCTEC 2016 - Hub de eventos com redis

Um pouco da mundi/stone <3

Page 4: FEUCTEC 2016 - Hub de eventos com redis

Hub de eventos com

Page 5: FEUCTEC 2016 - Hub de eventos com redis

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.

Page 6: FEUCTEC 2016 - Hub de eventos com redis

Tipos de estruturas ;)

Page 7: FEUCTEC 2016 - Hub de eventos com redis

string[] operationSystem = { “Windows”, “Linux”, “Mac” };

Page 8: FEUCTEC 2016 - Hub de eventos com redis

Porque usar Redis?

Page 9: FEUCTEC 2016 - Hub de eventos com redis

Porque não usar Redis?

Page 10: FEUCTEC 2016 - Hub de eventos com redis

Eles usam ;P

Page 11: FEUCTEC 2016 - Hub de eventos com redis

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.”

Page 12: FEUCTEC 2016 - Hub de eventos com redis

/*só teoria não né?

Obrigado!*/

Page 13: FEUCTEC 2016 - Hub de eventos com redis

Pasta do Redis

Page 14: FEUCTEC 2016 - Hub de eventos com redis

redis-server

Page 15: FEUCTEC 2016 - Hub de eventos com redis

redis-cli

Page 16: FEUCTEC 2016 - Hub de eventos com redis

Armazenamento SETRedis-cli

127.0.0.1:6379> SET minhaChave "meu valor"OK127.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);

Page 17: FEUCTEC 2016 - Hub de eventos com redis

Armazenamento DELRedis-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));

Page 18: FEUCTEC 2016 - Hub de eventos com redis

$”{usando no mundo real}”

Page 19: FEUCTEC 2016 - Hub de eventos com redis

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

Page 20: FEUCTEC 2016 - Hub de eventos com redis

Agora vem

Page 21: FEUCTEC 2016 - Hub de eventos com redis

Pub/Sub no Redis

Page 22: FEUCTEC 2016 - Hub de eventos com redis

Pub/Sub no Redis nada mais é que um “Observer” Design Pattern

Page 23: FEUCTEC 2016 - Hub de eventos com redis

Pub/Sub <3

Page 24: FEUCTEC 2016 - Hub de eventos com redis

Assinando canais

127.0.0.1:6379> SUBSCRIBE nomeDoCanal

127.0.0.1:6379> SUBSCRIBE musica127.0.0.1:6379> SUBSCRIBE tecnologia127.0.0.1:6379> PSUBSCRIBE *

Page 25: FEUCTEC 2016 - Hub de eventos com redis

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..”

Page 26: FEUCTEC 2016 - Hub de eventos com redis

Assinando canais

Page 27: FEUCTEC 2016 - Hub de eventos com redis

Assinando canais

Page 28: FEUCTEC 2016 - Hub de eventos com redis

Assinando canais

Page 29: FEUCTEC 2016 - Hub de eventos com redis

Publicando mensagens

Page 30: FEUCTEC 2016 - Hub de eventos com redis

$”{usando no mundo real ²}”

Page 31: FEUCTEC 2016 - Hub de eventos com redis

Casos reais parte 2

• Newsletter• Chat• Carrinho de compra

•Sua imaginação??

Page 32: FEUCTEC 2016 - Hub de eventos com redis

var mundipagg = new Mochileiros { NossaStack = "Nós também usamos Redis :)" };

Page 33: FEUCTEC 2016 - Hub de eventos com 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

Page 34: FEUCTEC 2016 - Hub de eventos com redis

Knowledge Sharing

• https://charleslomboni.wordpress.com/2016/08/12/hub-de-eventos-com-redis/

• https://github.com/charleslomboni/Exemplos-Redis

Page 35: FEUCTEC 2016 - Hub de eventos com redis
Page 36: FEUCTEC 2016 - Hub de eventos com redis

FINISH HIM