Ubuntu Server: Como configurar um servidor Redis e acessar o banco de dados Redis em um programa PHP

Ubuntu Server: Como configurar um servidor Redis e acessar o banco de dados Redis em um programa PHP

Redis é um banco de dados NoSQL de código aberto. Ele armazena dados de forma que uma chave corresponda a um valor e coopera com a memória (RAM). O desempenho é muito melhor do que um banco de dados relacional e pode ser usado em muitas linguagens de programação. Além do tipo de string, o valor do Redis também tem várias estruturas especiais, incluindo set, zset, list e hash, e fornece uma variedade de maneiras distintas de manipular esses campos.

Para começar, lembre-se que vamos usar o Ubuntu Server, se você ainda não fez o download você pode visitar o site do Ubuntu e fazer agora. Para este tutorial estamos utilizando o Ubuntu Server 20.04.3. No entanto, o tutorial vai funcionar em qualquer versão posterior do Ubuntu. Mas, informamos que não testamos em sistemas baseados no Ubuntu Server.

Instalando Redis no Ubuntu Server

Para instalar o Redis no Ubuntu Server não tem segredo, execute o comando abaixo:

Terminal
sudo apt install redis-server

Agora, após a instalação do Redis, lembre-se que a porta TCP padrão usada pelo servidor Redis é 6379. Você pode usar o seguinte comando para verificar se o servidor Redis foi realmente instalado corretamente:

Terminal
sudo netstat -tlnp | grep redis

Nota especial sobre o netstat, se você encontrar o erro abaixo, não se preocupe, o comando não está errado é que o net-tools não está instalado, para isso execute o comando abaixo e retorne a execução do comando anterior:

Como abaixo vai instalar o netstat que está no net-tools:

Terminal
sudo apt install net-tools

Sobre o comando netstat

Os comandos executados com o netstat podem exibir informações sobre conexões de rede, tabelas de roteamento, estatísticas de interface, conexões mascaradas e multicast.

  • O parâmetro -l só pode mostrar a conexão que está sendo monitorada. Se com o netstat não for fornecido nenhum parâmetro, a conexão no monitoramento será ignorada.
  • O parâmetro -t só pode mostrar a conexão TCP.
  • O parâmetro -n permite que o IP seja enviado diretamente, sem a necessidade de verificar o nome de domínio correspondente por meio do DNS.
  • O parâmetro -p pode exibir o curso ocupado pela conexão.

Configurando o Redis no Ubuntu Server

O caminho do arquivo de configuração do servidor Redis é /etc/redis/redis.conf. Lembre-se de usar o sudo ou o ROOT para editar o arquivo, ou ele vai ser exibido em branco. Mas, saiba que ele é assim por padrão:

Eu usei o comando abaixo para exibir este arquivo, lembrando que eu usei o nano para editar, mas você pode usar o editor que preferir:

Terminal
sudo /etc/redis/redis.conf

Os itens de configuração mais importantes são:

  • bind: Se você deseja se conectar ao servidor Redis remotamente, você precisa definir este item. Consulte este artigo .
  • supervised: Configure o sistema init para executar o Redis. O valor padrão é noque, embora nopareça funcionar normalmente, é melhor alterá- systemdlo para que nosso sistema init possa rastrear corretamente se o Redis ainda está operando normalmente.
  • databases: Define a quantidade de bases de dados disponíveis.Ao indexar, conta-se desde o 0início.Por default, será utilizada a base de dados com índice de valor 0. O valor padrão deste item é 16que este servidor Redis pode usar 16 bancos de dados.
  • save: Defina para salvar os dados atuais na memória como um arquivo (instantâneo) se houver um certo grau de alteração no banco de dados dentro de um determinado intervalo. saveO formato de gravação de é save , o que save 60 10000significa que um instantâneo é obtido se pelo menos 10.000 chaves forem alteradas em 60 segundos. O caminho de armazenamento padrão para instantâneos é /var/lib/redis/dump.rdb.
  • requirepass: Defina a senha necessária para o cliente se conectar ao servidor Redis. O padrão não é definido, o que significa que a função de verificação de senha não está habilitada.
  • maxclients: Defina o número máximo de conexões. O padrão não está definido, como está 10000.
  • maxmemory: Defina o uso máximo de memória. Se o uso de memória atingir o limite, ele maxmemory-policytentará remover a chave de acordo com a estratégia definida pelo projeto. Se não puder ser removida, fará com que a operação de inserção ou modificação retorne um erro. Não há configuração por padrão, o que significa que não há restrição.
  • maxmemory-policy: Estratégia adotada quando o uso da memória atinge o limite. Não há configuração por padrão, pois é noeviction, não remova a chave.

Outras estratégias são as seguintes:

  • volatile-lru: Remova as chaves expiradas de acordo com o algoritmo LRU.
  • allkeys-lru: Remova a chave de acordo com o algoritmo LRU. (Independentemente de ter expirado ou não)
  • volatile-lfu: Remova as chaves expiradas de acordo com o algoritmo LFU.
  • allkeys-lfu: Remova a chave de acordo com o algoritmo LFU. (Independentemente de ter expirado ou não)
  • volatile-random: Remova as chaves expiradas aleatoriamente.
  • allkeys-random: Remova as chaves aleatoriamente. (Independentemente de ter expirado ou não)
  • volatile-ttl: Remova a chave com o menor TTL entre as chaves expiradas.

Aplicando as novas configurações do Redis

Depois de reescrever o arquivo de configuração do Redis e salvá-lo, as novas configurações não serão aplicadas imediatamente ao servidor Redis em execução. Para fazer com que o servidor Redis leia novamente o arquivo de configuração, é melhor usar o seguinte comando para verificar se o arquivo de configuração está correto para evitar que o servidor Redis interrompa o serviço devido a erros no arquivo de configuração.

Terminal
sudo redis-server /etc/redis/redis.conf

Em seguida, execute o seguinte comando para recarregar o arquivo de configuração do Redis:

Terminal
sudo systemctl restart redis

Como usar o cliente Redis (redis-cli) e os comandos do Redis

redis-cli – é uma ferramenta de comando do cliente para Redis. Execute o seguinte comando para se conectar ao servidor Redis:

Terminal
redis-cli

Se houver configurações requirepass, use os authcomandos do Redis Shell para verificar a senha. Por exemplo, se a senha for foobared, você deve inserir o seguinte comando.

Terminal
auth foobared

Em seguida, você pode começar a digitar comandos do Redis para operar o banco de dados Redis.

Por exemplo, o comando a seguir pode criar um conjunto de dados de chave foo e valor bar para o banco de dados padrão 0.

Terminal
set foo bar

E o comando a seguir pode obter fooos dados da chave:

Terminal
get foo

O comando a seguir pode exibir o número de chaves em todos os bancos de dados:

Terminal
info keyspace

Acesse o banco de dados Redis no programa PHP

Para acessar o banco de dados Redis em um programa PHP, é necessário o suporte de módulos relacionados ao Redis. Use os seguintes comandos para visualizar os módulos atuais no ambiente PHP:

Terminal
php -m

Mas, se você ver o erro abaixo, é apenas que você não tem o PHP instalado, basta executar o comando orientado que tudo será resolvido:

Terminal
sudo apt install php7.4-cli

Conforme mostrado na figura acima, não há módulo relacionado ao Redis, então use o seguinte comando para instalar:

Terminal
sudo apt install php-redis

Após a instalação, você pode php -m para ver os módulos relacionados ao Redis:

O uso do Redis em PHP é o seguinte:

/var/www/html/index.php
<?php    
    $redis = new Redis();
    $redis->connect('127.0.0.1', 6379);
            
    $redis->set("foo", "bar");
    echo $redis->get("foo");                                                         
?>

Arquivo API:

https://github.com/phpredis/phpredis/blob/develop/README.markdown

Sobre o phpRedisAdmin

phpRedisAdmin é um backend de gerenciamento frequentemente usado ao usar o ambiente PHP + Redis, mas não é um item necessário. Se você não precisar, pode pular esta parte do conteúdo:

Instale php-mbstring

phpRedisAdmin usará o módulo php-mbstring, então você deve primeiro instalá-lo com o seguinte comando:

Terminal
sudo apt install php-mbstring

Instale o phpRedisAdmin

Execute o seguinte comando no terminal para instalar o phpRedisAdmin no Ubuntu Server:

Terminal
curl -s http://getcomposer.org/installer | php

Em seguida, execute o seguinte comando para instalar o phpRedisAdmin no diretório /usr/local/share/phpredisadmin:

Antes, veja se você tem o 7zip instalado, vamos precisar dele:

Terminal
sudo apt install p7zip-full p7zip-rar

Agora podemos seguir:

Terminal
sudo php composer.phar create-project -s dev erik-dubbelboer/php-redis-admin /usr/local/share/phpredisadmin
Saída correta e inclusiva da instalação do phpredisadmin sem erros

Resolução de possíveis problemas nesta etapa!

Se você ver o erro abaixo apontando que você não tem o 7zip, vamos precisar instalar. Do contrário, pule a resolução de possíveis problemas:

Saída com erros

Para isso, execute o comando:

Terminal
sudo apt install p7zip-full p7zip-rar

E assim, você verá:

Agora, vamos executar o comando novamente. No entanto, é bem provável que sejamos informados que o diretório não esteja vazio:

Então, agora vamos precisar remover o diretório e criar de novo:

Terminal
sudo rm -r /usr/local/share/phpredisadmin

Feito! Agora execute o comando para instalar o phpredisamin novamente:

Terminal
sudo php composer.phar create-project -s dev erik-dubbelboer/php-redis-admin /usr/local/share/phpredisadmin
Saída sem erros

Execute o seguinte comando para copiar o modelo de arquivo de configuração phpRedisAdmin:

Terminal
sudo cp /usr/local/share/phpredisadmin/includes/config.sample.inc.php /usr/local/share/phpredisadmin/includes/config.inc.php

O arquivo /usr/local/share/phpredisadmin/includes/config.inc.php é o arquivo de configuração do phpRedisAdmin! Veja:

Terminal
sudo nano /usr/local/share/phpredisadmin/includes/config.inc.php

Se o phpRedisAdmin e o servidor Redis estiverem sendo executados no mesmo sistema operacional, é recomendável alterar o valor do campo scheme no arquivo de configuração para unix. Se o servidor Redis tiver configurações requirepass, você precisará modificar os authcampos no arquivo de configuração.

Configurando o Nginx

O phpRedisAdmin esta no diretório /usr/local/share/phpredisadmin. Podemos usar os root comandos do arquivo de configuração Nginx para criar um bloco location no phpRedisAdmin. O método de configuração é o seguinte:

server {
    index index.html index.php;
 
    set $php_uds unix:/run/php/php7.4-fpm.sock;
 
    location ~ \.php$ {
        fastcgi_pass $php_uds;
        include fastcgi.conf;
    }
 
    location = /phpredisadmin {
        return 301 /phpredisadmin/;
    }
 
    location ^~ /phpredisadmin/ {
        root /usr/local/share;
       
        allow 127.0.0.1;
        deny all;
       
        if ($uri ~ \.php$) {
            fastcgi_pass $php_uds;
        }   
       
        include fastcgi.conf;
    }
}

Desta forma, o /phpredisadmin/phpRedisAdmin pode ser aberto enviando uma solicitação com o prefixo do caminho do protocolo HTTP no mesmo host. Como mostrado abaixo:

A adição do comando allow e deny evita que o phpRedisAdmin seja atacado por usuários mal intencionados. Se quiser usar phpRedisAdmin em outro host, você pode adicionar mais comandos allow ou simplesmente mudar para a autenticação HTTP básica.

Na verdade, o próprio phpRedisAdmin tem a função de fornecer autenticação. Você pode encontrar os campos de configuração relevantes no arquivo de configuração, mas eu recomendaria configurar a conta e autenticação através do Nginx.

Aplicar as novas configurações do Nginx

Depois de reescrever o arquivo de configuração Nginx e salvá-lo, as novas configurações não serão aplicadas imediatamente ao servidor Nginx em execução.

Para fazer o servidor Nginx reler o arquivo de configuração, é melhor usar o seguinte comando para verificar se o arquivo de configuração está correto, para evitar que o servidor Nginx interrompa o serviço devido ao erro do arquivo de configuração.

Terminal
sudo nginx -t

Em seguida, execute o seguinte comando para recarregar o arquivo de configuração Nginx:

Terminal
sudo nginx -s reload

Execute se o phpRedisAdmin e servidor Redis não estão no mesmo sistema operacional

Para permitir que o phpRedisAdmin se conecte a outros sistemas operacionais ou servidores Redis em outros hosts, você deve modificar o /usr/local/share/phpredisadmin/includes/config.inc.php especialmente os campos host e port no arquivo de configuração do phpRedisAdmin e definir os valores scheme e tcp. Esperamos ter ajudado você!