O documento fornece uma visão geral do Redis, um banco de dados em memória open source. Ele descreve as principais características do Redis, como armazenamento de chaves-valores, listas, conjuntos e conjuntos ordenados. Além disso, explica alguns casos de uso comuns do Redis, como contagem, sessões e filas.
Slides da palestra sobre Redis apresentada no Dev in Santos. Modifiquei apenas o "classe A" para "sensacional" e corrigi o código do slide "Utilizando sets".
Palestra também apresentada no NoSqlBahia e no TDC 2012
Slides da palestra sobre Redis apresentada no Dev in Santos. Modifiquei apenas o "classe A" para "sensacional" e corrigi o código do slide "Utilizando sets".
Palestra também apresentada no NoSqlBahia e no TDC 2012
Apresentação realizada no dia 8/11/2014 no evento TchêLinux Bento Gonçalves edição 2014 - http://bento.tchelinux.org
Falei sobre os conceitos de bases de dados NoSQL, cases, comparações com o modelo relacional, expressões SQL x MongoDB (orientado à documentos), instalação, recursos do MongoDB, operações via console, modelagem (abordagem embedded), driver PHP, anatomia do código PHP, CRUD (Create, Read, Update and Delete), ObjectId, operadores, segurança, persistência de objetos, tratamento de arrays (documentos aninhados), índices (performance), projeção, agregação, hospedagem, ferramentas de administração e programa de certificação.
Apresentação realizada no dia 8/11/2014 no evento TchêLinux Bento Gonçalves edição 2014 - http://bento.tchelinux.org
Falei sobre os conceitos de bases de dados NoSQL, cases, comparações com o modelo relacional, expressões SQL x MongoDB (orientado à documentos), instalação, recursos do MongoDB, operações via console, modelagem (abordagem embedded), driver PHP, anatomia do código PHP, CRUD (Create, Read, Update and Delete), ObjectId, operadores, segurança, persistência de objetos, tratamento de arrays (documentos aninhados), índices (performance), projeção, agregação, hospedagem, ferramentas de administração e programa de certificação.
Minicurso de Ruby on Rails que ocorreu de 25/11/2014 até 28/11/2014 no Instituto Federal de Educação Ciência e Tecnologia do Sudeste de Minas Campus Barbacena
HTML5 e CSS3 já não é mais futuro. Nesta talk é abordado um overview de novas tecnologias que já estão em desenvolvimento e tornarão realidade nos próximos anos. Dentre elas: DOM Level 4, CSS Selectors Level 4 & 5, Media Query 4, HTML 5.1, Ecmascript 6 & 7+.
Apresentada em: 14 de Dezembro de 2013 no Front in Recife
Local: Faculdade Marista
Palestrantes: Luiz Tiago & Guilherme Farias
Apresentação do Projeto Final de Alberto Scremin e Bianca Caruso. Orientados pela professora Vanessa Braganholo.
Curso: Bacharelado de Ciência da Computação - UFF
Guilherme Blanco, Lead Architect da Carmigo, fez a palestra "Keynote: PHP-7", no PHP Experience 2016.
O iMasters PHP Experience 2016 aconteceu nos dias 21 e 22 de Março de 2015, no Hotel Tivoli em São Paulo-SP
http://phpexperience2016.imasters.com.br/
MySQL em 10min - Alexandre Almeida HTI TecnologiaMySQL Brasil
Uma boa explicação de porque utilizar MySQL e um passo a passo mostrando como instalá-lo em menos de 10 minutos. Slides da apresentação de Alexandre Almeida durante o OTN MySQL Community Forum 2011.
Apresentação realizada na trilha de banco de dados do TDC São Paulo 2016.
Demostra conceitos básicos sobre o que é um banco de dados temporal e como o mesmo foi aplicado a Umbler para realizar a monitoria do consumo de recursos de seus clientes em tempo real.
InfluxDb: como monitorar milhares de dados por segundo em real time Umbler
Slides da Palestra apresentada na Trilha Banco de Dados do The Developers Conference 2016 - São Paulo.
A palestra aborda os principais conceitos sobre Time series database (TSDB), e demonstra como utilizar a stack TICK (Telegraf, InfluxDb, Conograph, Kapacitor) da InfluxData para resolver problemas de monitoria de dados em grande escala, gerando gráficos e alertas em tempo real.
2. whoami
Desenvolvedor/Líder Técnico em
projetos voltados para Gestão de
Conteúdo e Portais
Bacharel em Sistemas de Informação – FIC
Twitter: fjunior87
Linkedin: br.linkedin.com/in/fribeiro
Blog: http://xicojunior.wordpress.com
Email: fjunior87@gmail.com
3. Redis
• Criado por Salvatore Sanfilippo(@antirez)
• Primeira Release em março de 2009
• Patrocinado pela VM Ware
• Atualmente na versão 2.4.17
4. Redis
• REmote DIctionary Server
• Key-Value Store - Dicionário(hash) Remoto
• Suporta outras estruturas de dados
– List, set, hash, ordered set
• DataStructure Server
• Publish/Subscribe
• Expires
5. Redis
• Em memória... Muito, muito rápido!!!!
– Mas persiste os dados em disco – Snapshoting
– Requer bastante RAM dependendo da quantidade
de dados
• Non-Blocking I/O
• Single-Threaded
• 100.000+ operações de leitura e
escrita/segundo[1]
[1]http://simonwillison.net/static/2010/redis-tutorial/
7. Redis
• Por onde iniciar?
– http://try.redis-db.com/
• Instalação
– Download e unzip
– Iniciar o server: ./redis-server ou redis-
server.exe(WIN)
– Iniciar o client: ./redis-cli ou redis-cli.exe(Win)
• Muito simples!!!
8. Chaves e Valores
• Chaves são utilizadas para identificar dados no
Redis(String)
– Ex: server:name, user:1
• Valores estão associados com as chaves
– String, Integer, Estrutura de Dado
– JSON, XML, whatever...
– Strings são byte arrays
9. Chaves e Valores
• Associando valores a chaves
set server:name myhostname
set user:1
„{“nome”:”junior”,”username”:”fjunior87”}‟
10. Chaves e Valores
• Obtendo o valor de uma chave
get server:name
get user:1
11. Comandos
• GET • TYPE
• SET • EXISTS
• SETNX • DEL
• GETSET • EXPIRE
• MGET
• EXPIREAT
• MSET
• TTL
• INCR/INCRBY
• DECR/DECRBY
12. Comandos
setnx foo bar //OK!
setnx foo bar2 //NoK!
//setar varias chaves
mset dia 06 mes 10 ano 2012
//obter varias chaves
mget dia mes ano
13. Comandos
//setar novo valor e obter o antigo
set var valor
getset var novovalor //retorna
„valor‟
//Contador
incr user:ids
decr user:1:convites
14. Comandos
//checando o tipo da chave
type ano
//deletando uma chave
del ano
//checando existencia de um chave
exists blah
15. Caching
• Redis como um Cache store
– EXPIRE, EXPIREAT, TTL
SET last_page <html></html>
EXPIRE last_page 60
TTL last_page
18. Listas
//adicionando elementos ao inicio
lpush linguagem python
//adicionando ao final
rpush linguagem java
rpush linguagem ruby
//obtendo todos os elementos
lrange linguagem 0 -1
26. Set
//Amigos em comum
sinter friends:junior friends:manolo
//armazenar o resultado em outra chave
sinterstore chave_destino friends:junior
friends:manolo
27. Set
//amigos do manolo que não são amigos do jr
SDIFF friends:manolo friends:junior
//todos os amigos do manolo e junior
SUNION friends:manolo friends:junior
28. Sorted Set
• zset
• Similar ao SET
• Cada elemento possui um score
• Podemos consultar pelo score ou intervalo de
scores em qualquer direção (bottom/top)
32. Sorted Set
//obter os 3 menos votados
ZRANGE urna:1 0 2
//obter os 3 menos votados com score
ZRANGE urna:1 0 2 WITHSCORES
//obter os 3 mais votados
ZREVRANGE urna:1 0 2 WITHSCORES
33. Sorted Set
//candidatos com numero de votos entre 20 e
50
zrangebyscore urna:1 20 50
zrangebyscore urna:1 20 50 WITHSCORES
35. Sorted Set
//total de votos dos candidatos
zunionstore urnatotal 2 urna:1 urna:2
zrevrange urnatotal 0 -1 withscores
36. Hash
• Como o nome já diz
• Fields
• Ideal para armazenar objetos
– Mais flexibilidade do que objetos serializados
– Podendo obter/atualizar valores de campos
específicos
38. Hash
//Armazenando um usuario
hset user:1 nome junior
hset user:1 username fjunior87
//setando varios fields
hmset user:1 password 1234 idade 25
39. Hashes
//obtendo o nome
hget user:1 nome
//obtendo mais de um campo
hmget user:1 idade password
//obtendo todos
hgetall user:1
40. Pipeline
• A cada comando o cliente aguarda a resposta
sadd users junior
sadd users manolo
smembers users
• Acima temos 3 trips
• RTT – Round Trip Time
• Redis suporta pipelining
• Vários comandos enviados sem esperar por suas
respostas – batch de comandos
• Minimiza overhead de rede
41. Pipeline
• Exemplo usando a biblioteca redis-py
r=redis.Redis()
pipe=r.pipe ()
for i in range(10000):
pipe.ping()
pipe.execute()
42. Transaction
• Permitem a execução de um grupo de
comandos de forma atômica
• 2 garantias
– Comandos executados sequencialmente sem
interferência
– Tudo ou nada – Ou todos são executados ou
nenhum
48. Casos de Uso
• Contador
– Quando bloquear um IP
– Page Views
– Podemos utilizar o comando INCR
incr acess:127.0.0.1:06-10-2012
url = md5(url)
incr views:url:06-10-2012
Incr views:06-10-2012
49. Casos de Uso
• Sessões Web
– Redis para armazenar os dados de sessão
hset session:as242dsd user fjunior87
displayname junior
Expire session:as242dsd 1800
– django-redis-sessions
50. Casos de Uso
• Caching
– Podendo ser usado da mesma forma que o
memcache
– django-redis-cache