Download - Turbinando Drupal com Redis
![Page 1: Turbinando Drupal com Redis](https://reader031.vdocuments.net/reader031/viewer/2022031910/58e588a21a28abbf5d8b6423/html5/thumbnails/1.jpg)
Turbinando Drupal
comRedis
Daniel Santos - @apachetec
![Page 2: Turbinando Drupal com Redis](https://reader031.vdocuments.net/reader031/viewer/2022031910/58e588a21a28abbf5d8b6423/html5/thumbnails/2.jpg)
Daniel Santos - Apache
@apachetec
instagram.com/apachetec
slideshare.com/apachetec
![Page 3: Turbinando Drupal com Redis](https://reader031.vdocuments.net/reader031/viewer/2022031910/58e588a21a28abbf5d8b6423/html5/thumbnails/3.jpg)
![Page 4: Turbinando Drupal com Redis](https://reader031.vdocuments.net/reader031/viewer/2022031910/58e588a21a28abbf5d8b6423/html5/thumbnails/4.jpg)
Redis - Remote Dictionary Server
Redis é um banco de Dados NoSql. Ele foi criado por Salvatore Sanfilippo, que disponibilizou o código para a comunidade open-source em 2009
![Page 5: Turbinando Drupal com Redis](https://reader031.vdocuments.net/reader031/viewer/2022031910/58e588a21a28abbf5d8b6423/html5/thumbnails/5.jpg)
Principais diferenças entre Redis comparado ao Memcached
❖ Tipo de Dados
❖ Documentação
❖ Suporte a outras tecnologias
❖ Tamanho do valor suportado
❖ Command line
![Page 6: Turbinando Drupal com Redis](https://reader031.vdocuments.net/reader031/viewer/2022031910/58e588a21a28abbf5d8b6423/html5/thumbnails/6.jpg)
Tipos de dados suportados pelo Redis
❖ String
❖ Hashes
❖ Lists
❖ Sets
❖ Sorted Sets
![Page 7: Turbinando Drupal com Redis](https://reader031.vdocuments.net/reader031/viewer/2022031910/58e588a21a28abbf5d8b6423/html5/thumbnails/7.jpg)
String
Redis
![Page 8: Turbinando Drupal com Redis](https://reader031.vdocuments.net/reader031/viewer/2022031910/58e588a21a28abbf5d8b6423/html5/thumbnails/8.jpg)
String
Funciona da forma tradicional, Chave x Valor.
![Page 9: Turbinando Drupal com Redis](https://reader031.vdocuments.net/reader031/viewer/2022031910/58e588a21a28abbf5d8b6423/html5/thumbnails/9.jpg)
redis> set mykey "value" // Define um valor do tipo string
Execução
redis> append mykey " last value" // Concatena uma string
redis> hget mykey // Retorna a string associada a chave
redis> strlen mykey // Retorna a quantidade de caracteres de uma string
![Page 10: Turbinando Drupal com Redis](https://reader031.vdocuments.net/reader031/viewer/2022031910/58e588a21a28abbf5d8b6423/html5/thumbnails/10.jpg)
Hashes
Redis
![Page 11: Turbinando Drupal com Redis](https://reader031.vdocuments.net/reader031/viewer/2022031910/58e588a21a28abbf5d8b6423/html5/thumbnails/11.jpg)
Hashes
Funciona de uma forma parecida como propriedades em um objeto,
podendo definir uma chave e múltiplos valores com Chave x Valor,
associados a essa única chave.
![Page 12: Turbinando Drupal com Redis](https://reader031.vdocuments.net/reader031/viewer/2022031910/58e588a21a28abbf5d8b6423/html5/thumbnails/12.jpg)
redis> hset mykey field1 "field1" // Define uma chave x valor a uma key
Execução
redis> hmset mykey field2 "field2" field3 "field3" // Define múltiplos chave x valor a uma key
redis> hget mykey field1 // Retorna o valor de uma propriedade de um hash
redis> hvals mykey // Retorna somente os valores de um hash
![Page 13: Turbinando Drupal com Redis](https://reader031.vdocuments.net/reader031/viewer/2022031910/58e588a21a28abbf5d8b6423/html5/thumbnails/13.jpg)
Lists
Redis
![Page 14: Turbinando Drupal com Redis](https://reader031.vdocuments.net/reader031/viewer/2022031910/58e588a21a28abbf5d8b6423/html5/thumbnails/14.jpg)
Lists
Funciona quase como um array indexado, com ele podemos definir uma chave e uma lista de valores
associoados a essa chave.
![Page 15: Turbinando Drupal com Redis](https://reader031.vdocuments.net/reader031/viewer/2022031910/58e588a21a28abbf5d8b6423/html5/thumbnails/15.jpg)
redis> lpush mykey "value" // Adiciona um valor no topo de uma lista
Execução
redis> lpop mykey // Retorna e remove o primeiro valor de uma lista
redis> rpush mykey "value" // Adiciona um valor no fim de uma lista
redis> llen mykey // Retorna a quantidade de valores em uma lista
![Page 16: Turbinando Drupal com Redis](https://reader031.vdocuments.net/reader031/viewer/2022031910/58e588a21a28abbf5d8b6423/html5/thumbnails/16.jpg)
Sorted Set
Redis
![Page 17: Turbinando Drupal com Redis](https://reader031.vdocuments.net/reader031/viewer/2022031910/58e588a21a28abbf5d8b6423/html5/thumbnails/17.jpg)
Sorted Set
Funciona basicamente como o tipo List, salvo que ele não permite valores
duplicados e nos permite realizar ordenações.
![Page 18: Turbinando Drupal com Redis](https://reader031.vdocuments.net/reader031/viewer/2022031910/58e588a21a28abbf5d8b6423/html5/thumbnails/18.jpg)
redis> zadd mykey 0 "value" // 0 = score (weight)
Execução
redis> zrank mykey "value" // retorna o score do valor
redis> zrangebyscore mykey -inf +inf // Ordena ASC
redis> zrevrangebyscore mykey +inf -inf // Ordena DESC
![Page 19: Turbinando Drupal com Redis](https://reader031.vdocuments.net/reader031/viewer/2022031910/58e588a21a28abbf5d8b6423/html5/thumbnails/19.jpg)
![Page 20: Turbinando Drupal com Redis](https://reader031.vdocuments.net/reader031/viewer/2022031910/58e588a21a28abbf5d8b6423/html5/thumbnails/20.jpg)
Drupal + Redis
No Drupal utilizamos o módulo Redis e também temos que utilizar uma
biblioteca para integrarmos o PHP ao Redis.
![Page 21: Turbinando Drupal com Redis](https://reader031.vdocuments.net/reader031/viewer/2022031910/58e588a21a28abbf5d8b6423/html5/thumbnails/21.jpg)
Drupal + Redis
O próprio módulo sugere as bibliotecas que devemos utilizar
Predis ou PhpRedis.
![Page 22: Turbinando Drupal com Redis](https://reader031.vdocuments.net/reader031/viewer/2022031910/58e588a21a28abbf5d8b6423/html5/thumbnails/22.jpg)
settings.php
$conf['redis_client_interface'] = 'Predis'; // Definindo a biblioteca que estou utilizando.
$conf['redis_client_host'] = '127.0.0.1'; // Define o host onde está o Server do Redis.
$conf['cache_prefix'] = 'blog_'; // Um prefixo para as chaves que o Drupal irá inserir no Redis, essa configuração é muito importante quando você está utilizando o Drupal com Multi-Sites.
![Page 23: Turbinando Drupal com Redis](https://reader031.vdocuments.net/reader031/viewer/2022031910/58e588a21a28abbf5d8b6423/html5/thumbnails/23.jpg)
settings.php
Aqui são alguns arquivos que devemos sobrescrever do padrão do Drupal, assim alteramos as configurações padrões de cache, que por padrão é inserido no Banco de Dados.
$conf['lock_inc'] = 'sites/all/modules/contrib/redis/redis.lock.inc';
$conf['path_inc'] = 'sites/all/modules/contrib/redis/redis.path.inc';
$conf['cache_backends'][] = 'sites/all/modules/contrib/redis/redis.autoload.inc';
![Page 24: Turbinando Drupal com Redis](https://reader031.vdocuments.net/reader031/viewer/2022031910/58e588a21a28abbf5d8b6423/html5/thumbnails/24.jpg)
settings.php
$conf['cache_default_class'] = 'Redis_Cache';$conf['cache_class_cache'] = 'Redis_Cache';$conf['cache_class_page'] = 'Redis_Cache';$conf['cache_class_content'] = 'Redis_Cache';$conf['cache_class_block'] = 'Redis_Cache';$conf['cache_class_views'] = 'Redis_Cache';$conf['cache_class_views_data'] = 'Redis_Cache';$conf['cache_class_cache_form'] = 'Redis_Cache';$conf['cache_class_cache_menu'] = 'Redis_Cache';$conf['cache_class_cache_bootstrap'] = 'Redis_Cache';
![Page 25: Turbinando Drupal com Redis](https://reader031.vdocuments.net/reader031/viewer/2022031910/58e588a21a28abbf5d8b6423/html5/thumbnails/25.jpg)
Obs:
O Ideal de se trabalhar com Redis, é que ele não esteja no mesmo servidor da sua aplicação, pelo fato de ele usar
a memória RAM para guardar seus dados.
![Page 26: Turbinando Drupal com Redis](https://reader031.vdocuments.net/reader031/viewer/2022031910/58e588a21a28abbf5d8b6423/html5/thumbnails/26.jpg)
Live Examples
Redis
![Page 27: Turbinando Drupal com Redis](https://reader031.vdocuments.net/reader031/viewer/2022031910/58e588a21a28abbf5d8b6423/html5/thumbnails/27.jpg)
Dúvidas?
Perguntas
![Page 28: Turbinando Drupal com Redis](https://reader031.vdocuments.net/reader031/viewer/2022031910/58e588a21a28abbf5d8b6423/html5/thumbnails/28.jpg)
OBRIGADO!!!
Daniel Santos - ApacheWeb Developer Full Stack
Mobile: +55 (11) 9 6624-4654