O documento descreve o Redis, um banco de dados chave-valor armazenado na memória. Ele é muito rápido, de código aberto, e suporta vários tipos de dados e recursos como publicação-assinatura. O documento também discute como configurar e usar o Redis com PHP via bibliotecas como Predis, incluindo comandos básicos e avançados.
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/
PHP Experience 2016 - [Palestra] Rumo à Certificação PHPiMasters
Ari Stopassola Jr, Analista de Sistemas do perito.inf.br, fez a palestra "Rumo à Certificação PHP", 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/
Programando para programadores: Desafios na evolução de um FrameworkPablo Dall'Oglio
Nesta palestra são abordados alguns desafios a serem enfrentados na criação de um Framework PHP open-source e também os obstáculos a serem superados para que o mesmo evolua tecnologicamente, mantendo a retrocompatibilidade e uma base de usuários ativa, fazendo o uso correto de seus conceitos.
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/
PHP Experience 2016 - [Palestra] Rumo à Certificação PHPiMasters
Ari Stopassola Jr, Analista de Sistemas do perito.inf.br, fez a palestra "Rumo à Certificação PHP", 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/
Programando para programadores: Desafios na evolução de um FrameworkPablo Dall'Oglio
Nesta palestra são abordados alguns desafios a serem enfrentados na criação de um Framework PHP open-source e também os obstáculos a serem superados para que o mesmo evolua tecnologicamente, mantendo a retrocompatibilidade e uma base de usuários ativa, fazendo o uso correto de seus conceitos.
Do Clipper e Delphi ao Ruby e PHP: Antes e depois dos frameworksPablo Dall'Oglio
Nesta apresentação é demonstrada a evolução na maneira de programar entre as linguagens Clipper (procedural, modo texto), Delphi (Orientada a Objetos, focada em componentes, Desktop), até as linguagens Ruby e PHP, com exemplos que demonstram o uso de frameworks MVC.
Palestra sobre utilização de design patterns em PHP. Exemplos práticos com Singleton, Facade, Adapter, Front Controller, Template View, Table Data Gateway e Active Record.
Zend Framework 2 - Desenvolvimento Ágil CompetenteMichael Cardoso
Essa apresentação faz parte do minicurso Zend Framework 2, onde apresentamos suas principais características e como fazer a instalação deste framework web de ponta.
Apresentação intitulada "Modern PHP" que será apresentada na semana acadêmica da FACCAT (Taquara) entre os dias 25 a 29 de abril: http://techparty.faccat.br
Construindo ERP's com PHP: Desafios em design, manutenção segurança e perf...Pablo Dall'Oglio
Nesta apresentação serão apresentados diferentes aspectos relacionados à design, manutenção segurança e performance, que influenciam a construção de ERP's com PHP. Boas práticas, Design Patterns, Facade, Adapter, Modelagem, DDD, Acoplamento, Sessões, Cache de objetos.
Do Clipper e Delphi ao Ruby e PHP: Antes e depois dos frameworksPablo Dall'Oglio
Nesta apresentação é demonstrada a evolução na maneira de programar entre as linguagens Clipper (procedural, modo texto), Delphi (Orientada a Objetos, focada em componentes, Desktop), até as linguagens Ruby e PHP, com exemplos que demonstram o uso de frameworks MVC.
Palestra sobre utilização de design patterns em PHP. Exemplos práticos com Singleton, Facade, Adapter, Front Controller, Template View, Table Data Gateway e Active Record.
Zend Framework 2 - Desenvolvimento Ágil CompetenteMichael Cardoso
Essa apresentação faz parte do minicurso Zend Framework 2, onde apresentamos suas principais características e como fazer a instalação deste framework web de ponta.
Apresentação intitulada "Modern PHP" que será apresentada na semana acadêmica da FACCAT (Taquara) entre os dias 25 a 29 de abril: http://techparty.faccat.br
Construindo ERP's com PHP: Desafios em design, manutenção segurança e perf...Pablo Dall'Oglio
Nesta apresentação serão apresentados diferentes aspectos relacionados à design, manutenção segurança e performance, que influenciam a construção de ERP's com PHP. Boas práticas, Design Patterns, Facade, Adapter, Modelagem, DDD, Acoplamento, Sessões, Cache de objetos.
High-Volume Data Collection and Real Time Analytics Using Rediscacois
In this talk, we describe using Redis, an open source, in-memory key-value store, to capture large volumes of data from numerous remote sources while also allowing real-time monitoring and analytics. With this approach, we were able to capture a high volume of continuous data from numerous remote environmental sensors while consistently querying our database for real time monitoring and analytics.
* See more of my work at http://www.codehenge.net
The slides of my talk at PUGRoma.
Here, a complete sample code
https://github.com/leopro/trip-planner
Presentation is also here: http://t.co/5EK56yYBmQ
Nesta palestra falei um pouco sobre como trabalhar com a conexão PDO do jeito certo no PHP. Foi mostrado os métodos mais importantes da classe PDO.
Falei também um pouco sobre SQL Injection.
Quais são as as principais diferenças entre a conexão PDO e MySqli.
Cakephp - framework de desenvolvimento de aplicações Web em PHPArlindo Santos
Apresentação da framework de desenvolvimento de aplicações web - cakePHP.
Aprender a criar uma aplicação web em PHP usando o CakePHP.
- Instalação?
- Organização?
- Como criar um Blog?
- Autenticação?
- Multi-utilizador?
Alta Performance de Aplicações PHP com NginxThiago Paes
Segunda versão da minha palestra sobre alto desempenho de aplicações web em PHP utilizando o servidor HTTP Nginx ministrada no Minicursos e Palestras do Casin – 2ª Edição
Essa apresentação contém a configuração de todos os tipos básicos de configuração do asterisk.
Qualquer duvida podem mandar um email para:
vicente.proj@hotmail.com
Ou visitar o endereço do you tube que contém muitos vídeos ensinando a configurar o asterisk.
http://www.youtube.com/user/voipjava
Modelo BI open source para construção de um data warehouse com dados abertos do CENIPA.
Projeto disponível em:
https://github.com/wmarinho/edw_cenipa
https://github.com/wmarinho/docker-pentaho
Function as a service (FaaS) is a way to keep the focus on business delivery. Basically, we don't know how our code will run, infrastructure. Here we now how aws lambda works and how to run PHP into AWS Lambda
1. PHP e o cache sofisticado com
Redis
@Pv_Fusion
Paulo Victor L. L. Gomes
Analista de Sistemas, Pós-graduando em Engenharia de Sistemas, Zend Certified
Engineer PHP 5.3, contribuidor do PHPSP.
Voucher
TricaeNTM
2. Conhecendo o Redis
O Redis é um storage de dados schemaless, do
tipo tuple store ou key-value store, projetado para
armazenar dados na memória RAM e permitir
acesso fácil e extremamente rápido de qualquer
informação, através de uma API bastante rica e
simples de usar.
Versão estável 2.8.17 em 28/10/2014
3. Conhecendo o Redis
Open Source (BSD), criado por Salvatore
Sanfilippo (antirez) seu primeiro release foi em
Março de 2009. Foi comprado pela VMWare em
2010.
Versão estável 2.8.17 em 28/10/2014
4. Conhecendo o Redis
- Muito rápido
- Non-blocking I/O
- 100 000+ escrita/leitura por segundo
- Pequeno: 16 000 linhas de código C
- Complementa a camada de persistência
- API simples e completa
Versão estável 2.8.17 em 28/10/2014
5. Conhecendo o Redis
Referenciado em muitas literaturas como data
structure server, por permitir o armazenamento
de dados simples, como Strings e números, até
estruturas de dados complexas, como Lists, Sets,
Hashes e Sorted Sets.
Versão estável 2.8.17 em 28/10/2014
6. Quem está usando o Redis?
Fonte: http://redis.io/topics/whos-using-redis 30/10/2014
7. Mas e o Memcached?
O Redis assim como o Memcached é um
poderoso storage de dados na RAM, mas
implementa alguns recursos adicionais como
transactions, pipeline, data type, publish-subscribe
pattern, restore do dataset,
replicação, entre outros.
http://redis.io/documentation
8. E a segurança?
- Porta para conexões na interface de rede
- Regras básicas de segurança são válidas
como binde no localhost, iptables…
- Permite que conexões sejam autenticadas
antes que qualquer query seja executada
Guia de boas práticas de segurança com Redis
http://redis.io/topics/security
9. Instalação
Instale algumas dependências:
Debian / Ubuntu e variações
Fedora / Centos / RHEL
$ sudo apt-get update
$ sudo apt-get install build-essential
automake tcl8.5-dev
$ sudo yum install gcc make jemalloc-devel
lua-devel hiredis-devel
Depois é só instalar:
$ wget http://download.redis.io/redis-stable.tar.gz
$ tar xzf redis-stable.tar.gz
$ cd redis-stable
$ make
$ sudo make install
10. Console
Subir o Redis:
redis-server
Acessar o console:
redis-cli
Acessar o console informando o host e a porta
redis-cli -h NOMEHOST -p PORTA
15. Padronizando chaves
- Chaves podem conter espaço em branco mas… Não faça isso
- Chaves curtas performam melhor
- Curta mas com significado
- Separe utilizando dois pontos “ : “
- Convenção: tipo-de-objeto:id:campo
user:8:username = chaves
user:71:username = clotilde
- SHA1(data)
16. Console - Comandos Atomicos
- GETSET [chave valor]
- Define novo valor retornando o valor anterior
- SETNX [chave valor]
- Falha se a chave já esta definida
- MSETNX [chave1 valor1 chave2 valor2 chave3 valor4]
- Falha se alguma chave já existir
17. Configuração
O Redis pode ser iniciado sem um arquivo de configuração usando uma
configuração padrão built-in, no entanto, esta configuração é
recomendada apenas para fins de teste e desenvolvimento.
Subindo o redis para testes
redis-server
A maneira correta de configurar o Redis é fornecendo um arquivo de configuração,
normalmente chamado de redis.conf.
Subindo o redis informando suas configurações
redis-server redis.conf
18. Configuração
O que podemos configurar no redis.conf ?
- Porta de comunicação (port)
- Timeout de cliente (timeout)
- Verbosidade de log do server (loglevel)
- Snapshotting (save)
- Nome do arquivo onde persistir o DB (dbfilename)
- Replicação (slave-serve-stale-data, slave-read-only, repl-disable-tcp-nodelay,
slave-priority)
- Senha de autenticação (requirepass)
- Limite de clientes (maxclients)
- Limite de tamanho (maxmemory)
http://redis.io/topics/config
19. E se o serviço parar?
O Redis suporta duas estratégias diferentes de
Backup/Restore de dados
- Snapshotting
- Log appending
20. Snapshotting
Também conhecida como RDB, a persistência
do dataset no disco respeita dois critérios
combinados: Tempo decorrido (em segundos)
e Quantidade de alterações realizadas no
dataset, a partir do último backup realizado.
save TEMPO QUANTIDADE
save 60 5
21. Snapshotting
Também conhecida como RDB, a persistência
do dataset no disco respeita dois critérios
combinados: Tempo decorrido (em segundos)
e Quantidade de alterações realizadas no
dataset, a partir do último backup realizado.
save TEMPO QUANTIDADE
save 60 5
24. Predis - Set e Get
<?php
require __DIR__.'/../autoload.php';
$server = array(
'host' => '127.0.0.1',
'port' => 6381
);
$client = new PredisClient($server);
/** @var PredisResponseStatus $returnOfSet */
$returnOfSet = $client->set('news:3543:url', 'http://news.com.br/tinky-winky-briga-com-dipsy-e-pede-demissao-dos-teletubbies.html');
$response = $client->get('news:3543:url');
var_export($response);
25. Predis - MSet e MGet
<?php
require __DIR__.'/../autoload.php';
$client = new PredisClient(array('host' => '127.0.0.1', 'port' => 6381));
$urls = array(
'news:3543:url' => 'http://news.com.br/tinky-winky-briga-com-dipsy-e-pede-demissao-dos-teletubbies.html',
'news:3544:url' => 'http://news.com.br/ze-dirceu-canta-macarena-e-vai-preso.html',
'news:3545:url' => 'http://news.com.br/spotify-pega-virus-nos-servidores-depois-de-adicionar-funk-brasileiro.html',
'news:3545:content' => 'O spotify se deu mal quando decidiu inserir funk no seu leque musical',
'news:3543:content' => 'Tinky Wink briga com Dipsy e pede demissão dos Teletubies, segundo informações a briga de
iniciou por conta do creminho gostoso',
);
$client->mset($urls);
$response = $client->mget(array('news:3543:url', 'news:3544:url', 'news:3545:url', 'news:3543:content'));
var_export($response);
echo PHP_EOL;
30. Bonus
- PERSIST (Remove expiração de chave)
- PEXPIRE (Insere expiração em chave)
- STRLEN (Tamanho armazenado na chave)
- RENAME (Renomeia a chave)
- TYPE (Verifica tipo armazenado na chave)
Todos os comandos:
http://redis.io/commands
32. Referências
Redis
http://redis.io/
NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence
by Pramod J. Sadalage & Martin Fowler.
The Little Redis Book by Karl Seguin.
App Redis Documentation by Kyle Banks.
Redis in Action (Manning, 2013) by Josiah L. Carlson (early access edition).
Instant Redis Optimization How-to (Packt, 2013) by Arun Chinnachamy.
Instant Redis Persistence (Packt, 2013) by Matt Palmer.