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]
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 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);
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));
$”{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 musica127.0.0.1:6379> SUBSCRIBE tecnologia127.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
Top Related