Cacheamento de informações com Redis

março 14, 2017 8:00 pm Publicado por Deixe um comentário

Finalizei o meu artigo anterior com a promessa de trazer um texto sobre o uso do Redis para fazer o cacheamento de informações do WordPress. É preciso deixar bem claro que estes procedimentos podem ser úteis para diversas configurações do Redis como cacheamento, irei apenas utilizar de exemplo o WordPress, já que ele é um CMS bem popular e acredito que tem muita gente que vai gostar de ter estas dicas para configurar seu WordPress e deixar ele voando!

Para os que ainda estão um pouco perdidos com relação ao que é o Redis, volto a explicar. O Redis é um servidor de estruturas de dados que pode ser usado como um servidor de banco de dados ou utilizado em paralelo com o MySQL para aumentar o seu desempenho.

Nele podemos gravar informações em Strings, Integers, Lists, Sets, Ordered Sets e Hash Tables.

No exemplo que iremos montar abaixo ele irá funcionar como um cache persistente. Quando uma uma página for carregada pela primeira vez a query do banco será executada no servidor. Neste momento o Redis irá cachear a query. Após isto qualquer usuário que acessar esta mesma página terá o resultado vindo do Redis, sem a necessidade de consultar o banco novamente.

Mas chega de lenga lenga e vamos ao que realmente interessa. Configurar esta belezinha. Para isto vou utilizar um instância Cloud com Ubuntu 14.04 que tenho aqui na DialHost

Instalando o Redis

Para a instalação dele com o WordPress vamos precisar de dois packages em seu servidor: o redis-server e o php-redis ( Neste caso irei utilizar a branch php7 para conseguir configurar com o PHP 7). Para isto já estarei logado como root.

1. Instalando o Redis server

apt-get install redis-server

2. Instalando o php-redis

git clone -b php7 https://github.com/phpredis/phpredis.git

3. Movendo ele para o /etc/

mv phpredis/ /etc/ && cd /etc/phpredis

4. Instalando e configurando o módulo

phpize

./configure

make && make install

5. Habilitando a extensão no php.ini e dando o restart no apache

touch /etc/php/mods-available/redis.ini

echo 'extension=redis.so' > /etc/php/mods-available/redis.ini
phpenmod redis
service httpd restart

6. Agora é só testar a versão do seu módulo.

php --ri redis

Configurando o Redis como Cache

Como nosso objetivo para este projeto é cachear as requisições do WordPress vamos configurá-lo como cache. Para isto temos que seguir os passos a seguir.

1. Vamos adicionar as linhas abaixo no arquivo /etc/redis/redis.conf

Linhas para adicionar:

maxmemory 256mb
maxmemory-policy allkeys-lru

Comando para adicionar:

vim /etc/redis/redis.conf

Após fazer a inserção das linhas salve e feche o arquivo.

Configurando o seu WordPress

Agora que o Redis já está rodando, é hora de configurar ele para trabalhar junto com o WordPress.

1. Para isso, vamos precisar baixar o script object-cache.php para a pasta wp-content.

wget https://raw.githubusercontent.com/alleyinteractive/wp-redis/master/object-cache.php 
chown www-data: object-cache.php

2. Agora precisamos ir no wp-config.php e configurá-lo com a chave de cache que terá o nome do seu site, além de habilitar o cache persistent com o Redis. Para isto adicione as duas regras abaixo, ao final da seção “* Authentication Unique Keys and Salts”

define('WP_CACHE_KEY_SALT', 'meusite.com.br'); 
define('WP_CACHE', true);

3. Por fim salve o arquivo e reinicie os serviços do Redis, o Apache e o PHP7-fpm.

service redis-server restart 
service httpd restart
service php7-fpm restart

Conclusões

Após configurar a integração do Redis, podemos reparar um ganho no uso de recursos e na velocidade de carregamento da página. Como dito no começo deste artigo isto é porque não teremos mais que consultar o nosso banco de dados toda hora mais. O Redis vai agilizar, retornando todas as informações que ele cacheou em sua memória. Caso você queira monitorar o funcionamento do seu Redis basta usar o comando redis-cli: redis-cli monitor

iMasters assinaturas

Source: IMasters

Categorizados em:

Este artigo foi escrito pormajor

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *