Charles Lomboni é um desenvolvedor .NET e SharePoint na MundiPagg, onde programa utilizando Redis para armazenar e recuperar dados em memória e comunicar assincronamente mensagens entre cliente e servidor. Redis é uma estrutura de dados na memória que oferece suporte a vários tipos de estruturas e recursos como publicação e assinatura de canais.
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
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.
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.”
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
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