turbinando drupal com redis

28
Turbinando Drupal com Redis Daniel Santos - @apachetec

Upload: daniel-santos

Post on 11-Apr-2017

321 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Turbinando Drupal com Redis

Turbinando Drupal

comRedis

Daniel Santos - @apachetec

Page 2: Turbinando Drupal com Redis

Daniel Santos - Apache

[email protected]

@apachetec

instagram.com/apachetec

slideshare.com/apachetec

Page 3: Turbinando Drupal com Redis
Page 4: Turbinando Drupal com Redis

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

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

Tipos de dados suportados pelo Redis

❖ String

❖ Hashes

❖ Lists

❖ Sets

❖ Sorted Sets

Page 7: Turbinando Drupal com Redis

String

Redis

Page 8: Turbinando Drupal com Redis

String

Funciona da forma tradicional, Chave x Valor.

Page 9: Turbinando Drupal com Redis

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

Hashes

Redis

Page 11: Turbinando Drupal com Redis

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

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

Lists

Redis

Page 14: Turbinando Drupal com Redis

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

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

Sorted Set

Redis

Page 17: Turbinando Drupal com Redis

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

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
Page 20: Turbinando Drupal com Redis

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

Drupal + Redis

O próprio módulo sugere as bibliotecas que devemos utilizar

Predis ou PhpRedis.

Page 22: Turbinando Drupal com Redis

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

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

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

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

Live Examples

Redis

Page 27: Turbinando Drupal com Redis

Dúvidas?

Perguntas

Page 28: Turbinando Drupal com Redis

OBRIGADO!!!

Daniel Santos - ApacheWeb Developer Full Stack

[email protected]

Mobile: +55 (11) 9 6624-4654