Turbinando Drupal com Redis
date post
11-Apr-2017Category
Technology
view
316download
2
Embed Size (px)
Transcript of Turbinando Drupal com Redis
Turbinando Drupal
comRedis
Daniel Santos - @apachetec
Daniel Santos - Apache
@apachetec
instagram.com/apachetec
slideshare.com/apachetec
https://twitter.com/apachetechttp://instagram.com/apachetechttp://slideshare.com/apachetec
Redis - Remote Dictionary Server
Redis um banco de Dados NoSql. Ele foi criado por Salvatore Sanfilippo, que disponibilizou o cdigo para a comunidade open-source em 2009
Principais diferenas entre Redis comparado ao Memcached
Tipo de Dados
Documentao
Suporte a outras tecnologias
Tamanho do valor suportado
Command line
Tipos de dados suportados pelo Redis
String
Hashes
Lists
Sets
Sorted Sets
String
Redis
String
Funciona da forma tradicional, Chave x Valor.
redis> set mykey "value" // Define um valor do tipo string
Execuo
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
Hashes
Redis
Hashes
Funciona de uma forma parecida como propriedades em um objeto,
podendo definir uma chave e mltiplos valores com Chave x Valor,
associados a essa nica chave.
redis> hset mykey field1 "field1" // Define uma chave x valor a uma key
Execuo
redis> hmset mykey field2 "field2" field3 "field3" // Define mltiplos 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
Lists
Redis
Lists
Funciona quase como um array indexado, com ele podemos definir uma chave e uma lista de valores
associoados a essa chave.
redis> lpush mykey "value" // Adiciona um valor no topo de uma lista
Execuo
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
Sorted Set
Redis
Sorted Set
Funciona basicamente como o tipo List, salvo que ele no permite valores
duplicados e nos permite realizar ordenaes.
redis> zadd mykey 0 "value" // 0 = score (weight)
Execuo
redis> zrank mykey "value" // retorna o score do valor
redis> zrangebyscore mykey -inf +inf // Ordena ASC
redis> zrevrangebyscore mykey +inf -inf // Ordena DESC
Drupal + Redis
No Drupal utilizamos o mdulo Redis e tambm temos que utilizar uma
biblioteca para integrarmos o PHP ao Redis.
https://www.drupal.org/project/redis
Drupal + Redis
O prprio mdulo sugere as bibliotecas que devemos utilizar
Predis ou PhpRedis.
https://github.com/nrk/predishttps://github.com/phpredis/phpredishttps://github.com/nrk/predis
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 configurao muito importante quando voc est utilizando o Drupal com Multi-Sites.
settings.php
Aqui so alguns arquivos que devemos sobrescrever do padro do Drupal, assim alteramos as configuraes padres de cache, que por padro 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';
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';
Obs:
O Ideal de se trabalhar com Redis, que ele no esteja no mesmo servidor da sua aplicao, pelo fato de ele usar
a memria RAM para guardar seus dados.
Live Examples
Redis
Dvidas?
Perguntas
OBRIGADO!!!
Daniel Santos - ApacheWeb Developer Full Stack
Mobile: +55 (11) 9 6624-4654