Compartilhamento de tecnologia

Configuração e otimização do Redis

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. Bancos de dados relacionais e bancos de dados não relacionais

(1) Banco de dados relacional

Um banco de dados relacional é um banco de dados estruturado, criado em um banco de dados de modelo relacional e orientado a registros.

Bancos de dados relacionais comuns: Oracle, MySQL, SQL Server, Microsoft Access, DB2.

(2) Banco de dados não relacional

NOSQL=Not Only SQL é o termo geral para bancos de dados não relacionais. Dependendo do método de armazenamento, da estrutura de armazenamento e dos cenários de uso, ele é chamado de banco de dados não relacional. Bancos de dados diferentes dos bancos de dados relacionais convencionais podem ser chamados de bancos de dados não relacionais.

Bancos de dados não relacionais comuns: Redis, MongoDB, Hbase, CouhDB.

2. Noções básicas do Redis

(1) Introdução ao Redis

Redis é um banco de dados Nosql de código aberto escrito em linguagem C. Ele é executado com base na memória e oferece suporte à persistência. Ele adota a forma de armazenamento de valor-chave (par de valores-chave). Seu número de porta é 6379.

(2) Vantagens do Redis

  1. Possui alta velocidade de leitura e gravação de dados.
  2. Suporta tipos de dados ricos. valor-chave, strings, listas, hashes, conjuntos, conjuntos ordenados.
  3. Suporta persistência de dados. Os dados são salvos no disco e podem ser carregados e usados ​​após a reinicialização.
  4. Atômico.
  5. Suporte para backup de dados.

3. instalação redis

1. Instale o Redis

[root@localhost ~]# systemctl stop firewalld

[root@localhost ~]# setenforce 0

[root@localhost ~]# yum -y instalar gcc* zlib-devel

[root@localhost ~]#tar xvzf redis-4.0.9.tar.gz

[root@localhost ~]#cd redis-4.0.9/

[root@localhost redis-4.0.9]# fazer

Perceber:

Uma mensagem de erro será gerada após make,

solução:
Solução 1: Use make MALLOC=libc para especificar o alocador de memória para compilar para libc
Solução 2: make clean && make distclean

[root@localhost redis-4.0.9]# make PREFIX=/usr/local/redis install
[utilitários root@localhost]# ln -s /usr/local/redis/bin/* /usr/local/bin/

[root@localhost redis-4.0.9]# cd utils/
Entre eles: install_server.sh é o script de inicialização

[utilitários root@localhost]# ./install_server.sh
Selecione o caminho executável do redis [] /usr/local/redis/bin/redis-server(forneça o caminho do executável)

Visualize o controle de processos e serviços
[utilitários root@localhost]# netstat -anpt | grep redis
tcp 0 0 127.0.0.1:6379 0.0.0.0:* ESCUTAR 5360/redis-server 1
[utilitários root@localhost]# /etc/init.d/redis_6379 stop(redis está fechado)
[utilitários root@localhost]# /etc/init.d/redis_6379 start(sobre)
[utilitários root@localhost]# /etc/init.d/redis_6379 status (estado)

Modificação de parâmetros de configuração
[root@localhost ~]#vim /etc/redis/6379.conf
vincular 127.0.0.1 192.168.10.101//Escutando endereço do host
porto 6379 //porta
demonizar sim //Habilita processo daemon
arquivo pid /var/run/redis_6379.pid //Especifica o arquivo PID
aviso de nível de log//nível de registro
arquivo de log /var/log/redis_6379.log//Especifica o arquivo de log

[root@localhost~]#/etc/init.d/redis_6379 reiniciar

2. ferramenta de comando redis

[utilitários root@localhost]# redis-cli(Login local)
[utilitários root@localhost]# redis-cli -h 192.168.10.101 -p 6379(login remoto)
192.168.10.101:6379> ping(O serviço de detecção está funcionando normalmente)
PONG

3: ferramenta de teste de benchmark redis

redis-benchmark é a ferramenta oficial de teste de desempenho do Redis que pode testar com eficácia o desempenho dos serviços Redis.

  • -h: Especifique o nome do host do servidor;
  • -p: Especifique a porta do servidor;
  • -s: Especifique o soquete do servidor;
  • -c: Especifique o número de conexões simultâneas;
  • -n: Especifique o número de solicitações;
  • -d: Especifique o tamanho dos dados do valor SET/GET em bytes;
  • -k:1=manter vivo 0=reconectar;
  • -r: SET/GET/INCR usa chaves aleatórias, SADD usa valores aleatórios;
  • -P: transferência via tubo<numreq> perguntar;
  • -q: Força o encerramento do redis. Somente valores de consulta/seg são exibidos;
  • --csv: saída em formato CSV;
  • -l: Gera um loop e executa o teste permanentemente;
  • -t: executa apenas uma lista de comandos de teste separados por vírgula;
  • -I: Modo inativo. Abra apenas N conexões ociosas e aguarde.
  • (1) Desempenho da solicitação de teste

    [root@localhost ~]#redis-benchmark -h 192.168.10.101 -p 6379 -c 100 -n 100000

    Observação:

    -h: Especifique o nome do host do servidor;

  • -p: Especifique a porta do servidor;

    -c: Especifique o número de conexões simultâneas;

    -n: Especifique o número de solicitações;

(2) Teste o desempenho do acesso

[root@localhost ~]#redis-benchmark -h 192.168.10.101 -p 6379 -q -d 100

Observação:

-h: Especifique o nome do host do servidor;

-p: Especifique a porta do servidor;

-d: Especifique o tamanho dos dados do valor SET/GET em bytes;

-q: Força o encerramento do redis. Somente valores de consulta/seg são exibidos;

  1. 4. Comandos comuns para banco de dados Redis

set armazena dados comando formato definir valor chave

get Obter formato de comando de dados obter chave

(1) Comandos relacionados às teclas

1. Adicione pares de valores-chave

127.0.0.1:6379&gt; conjunto 1 1
OK
127.0.0.1:6379&gt; conjunto 2 2
OK
127.0.0.1:6379&gt; conjunto 3 3
OK

2. Visualize todos os valores no banco de dados

127.0.0.1:6379&gt; chaves *
1) "3"
2) "1"
3) "2"

3. Visualize os dados começando com v no banco de dados
127.0.0.1:6379>CHAVES v*

4. Visualize todos os dados começando com v no banco de dados

127.0.0.1:6379>CHAVES v?

5.Visualize o banco de dados atual com você começoO seguinte contém quaisquer dois dígitos de dados

127.0.0.1:6379>CHAVES v??

(2) existe

Determine se o valor existe.

127.0.0.1:6379>existe f5Determine se f5 existe

(inteiro) 1 O resultado é 1, indicando que a tecla f5 existe

como

(inteiro) 0 O resultado é 0, indicando que a tecla f5 não existe

(3)del

do O comando pode excluir o especificado chave

127.0.0.1:6379> do v5 Exclua v5 no banco de dados

(inteiro) 1

127.0.0.1:6379>obter v5

(nada)

(4) tipo

usar tipo O comando pode ser obtido chave correspondente valor tipo de valor

127.0.0.1:6379>tipo k1

corda

Observação:

Tipos de dados suportados pelo redis

  • String: String é o tipo mais simples, que é set e get comum, usado para armazenamento em cache de valores-chave.
  • Hash: Algoritmo hash, uma estrutura semelhante ao mapa Geralmente, dados estruturados, como um objeto, podem ser armazenados em cache no redis.
  • Lista: lista é uma lista ordenada. Você pode usar lista para armazenar algumas estruturas de dados do tipo lista, como listas de fãs, listas de comentários de artigos, etc.
  • Conjunto: Conjunto é uma coleção não ordenada que remove automaticamente duplicatas.
  • Conjunto classificado: Conjunto classificado é um conjunto classificado, que é desduplicado, mas pode ser classificado ao escrever, uma pontuação é fornecida e classificada automaticamente de acordo com a pontuação.

(5) renomear

renomear O comando é para um existente chave renomear

No uso real, é recomendado usar existe Comando para visualizar o alvo chave existe e então decidir se deseja executar renomear comando para evitar a substituição de dados importantes.

127.0.0.1:6379>renomear v22 v2 Renomear v22 para v2

OK

(6) renomear

renomear A função do comando é modificar o existente chave Execute uma renomeação e verifique se o novo nome existe.

usarrenomear Quando o comando for renomeado, se o destino chave Se existir, não será renomeado.

(7) tamanho do banco de dados

tamanho do banco de dados O objetivo do comando é visualizar o banco de dados atual chave Número de.

127.0.0.1:6379> tamanho do banco de dados

(inteiro) 5

5. Comandos comuns para vários bancos de dados

(1) Alternando entre vários bancos de dados

Redis Incluído por padrão sem quaisquer alterações 16 banco de dados, o nome do banco de dados é um número 0-15 ser nomeado em ordem

(1)Mude para o número de série 10 base de dados

127.0.0.1:6379>selecione 10

OK

(2)Mude para o número de série 15 base de dados

127.0.0.1:6379[10]>selecione 15

OK

(3)Mude para o número de série 0 base de dados

127.0.0.1:6379[15]>selecione 0

(2) Movendo dados entre vários bancos de dados

127.0.0.1:6379>conjunto k1 100 Crie k1 no banco de dados 0

OK

127.0.0.1:6379>pegue k1

"100"

127.0.0.1:6379>mover k1 1  //Move k1 do banco de dados 0 para o banco de dados 1

(inteiro) 1

127.0.0.1:6379>selecione 1   //Muda para o banco de dados de destino 1

OK

127.0.0.1:6379[1]>pegue k1   //Ver dados movidos

"100"

127.0.0.1:6379[1]> selecione 0

OK

127.0.0.1:6379> pegue k1         //O valor de k1 não pode ser visualizado no banco de dados 0

(nada)

(3) Limpar dados no banco de dados

Para limpar os dados atuais do banco de dados, use FLUSHDB

Implementação de comando; limpe todos os dados do banco de dados, use DESCARGA Implementação de comando.

6. Persistência Redis

Redis Todos os dados são armazenados na memória e, de tempos em tempos, salvos de forma assíncrona no disco.(Isso é chamadoModo semipersistente”); Você também pode gravar todas as alterações de dados em um anexar somente arquivo(aof)em(Isso é chamadoModo de persistência total”)

porque Redis Todos os dados são armazenados na memória. Se a persistência não estiver configurada,Redis Após reiniciar, todos os dados serão perdidos.Portanto, é necessário habilitarRedis A função de persistência salva dados no disco. Redis Após uma reinicialização, os dados podem ser recuperados do disco.Redis Dois métodos são fornecidos para persistência, um é RDBBanco de dados Redis Persistência (o princípio é Reid-Re ...Despejo cronometrado de registros de banco de dados na memória (jogar fora)para disco RDB persistência), o outro é AOFanexar somente arquivoPersistência (o princípio é Reid-Re ... O log de operação é gravado no arquivo de maneira anexada).

A diferença entre RDB e AOF

ROB grava o instantâneo de dados no disco dentro do intervalo de tempo especificado. É um subprocesso de fork. Ele primeiro grava os dados em uma pasta temporária. Após sucesso, ele substituirá o arquivo anterior e os armazenará com compactação binária.

AOF registra todas as operações de gravação e exclusão do servidor em formato de log. As operações de consulta não serão registradas, mas serão registradas em formato de texto.

 

Vantagens e desvantagens de RDB e AOF

Vantagens do RDB:

RDB é um arquivo binário compacto e compactado que representa um instantâneo dos dados do Redis em um determinado momento. É muito adequado para backup, cópia completa e outros cenários. Por exemplo, execute o backup bgsave a cada 6 horas e copie o arquivo RDB para a máquina remota ou sistema de arquivos para recuperação de desastres.

A recuperação de dados é rápida.

Maximize o desempenho

Alta eficiência de inicialização

RDBdeficiência:

Os dados que não foram salvos antes do desligamento serão perdidos.

       O RDB é concluído por meio do processo filho do fork, consumindo recursos.

Vantagens da AOF:

A durabilidade dos dados é alta

No modo anexar, o conteúdo do arquivo de log não será destruído mesmo se houver um tempo de inatividade.

O mecanismo de reescrita pode ser iniciado para proteger a segurança dos dados.

Desvantagens da AOF:

A velocidade de recuperação de dados AOF é lenta

A eficiência da operação AOF é baixa

Critérios para escolher entre os dois:

Sacrifique algum desempenho em troca de maior consistência de cache (AOF),

Quando as operações de gravação são frequentes, não habilite o backup em troca de maior desempenho e aguarde a operação manual. salvar quando, faça um backup novamente (RDB

Observação:

Se o redies precisar carregar um arquivo de persistência após reiniciar,prioridadeOs arquivos AOF serão selecionados.

Se o RDB for habilitado primeiro e depois o AOF for habilitado, e o RDB for persistido primeiro, o conteúdo do arquivo RDB será substituído pelo AOF.

7. Configuração de persistência Redis

(1) Configuração de persistência RDB

[root@localhost ~]# vim /etc/redis/6379.conf

Abrir 6379.conf Após o arquivo, pesquise salvar, você pode ver as informações de configuração conforme mostrado abaixo.

  • save 900 1: Após 900 segundos (15 minutos), se pelo menos 1 chave for alterada, despeje o instantâneo da memória.
  • save 300 10: Após 300 segundos (5 minutos), se pelo menos 10 chaves tiverem sido alteradas, despeje o instantâneo da memória.
  • save 60 10000: Após 60 segundos (1 minuto), se pelo menos 10.000 chaves tiverem sido alteradas, despeje o instantâneo da memória.
  • dbfilename dump.rdb: nome do arquivo RDB ##254 linha
  • dir /var/lib/redis/6379: caminho do arquivo RDB ##264 linha
  • rdbcompression sim: se deve compactar a linha ##242

(2) Configuração de persistência AOF

existir Redis Existem três métodos de sincronização no arquivo de configuração, são eles:

  • appendonly simAtive a persistência AOF (o padrão é não) ##673 linha
  • appendfilename "appendonly.aof" Nome do arquivo AOF ##677 linha
  • # appendfsync sempre
  • appendfsync a cada segundo
  • # appendfsync não

sempre: persistência síncrona, toda vez que os dados mudam, eles serão gravados no disco imediatamente ## linha 702

Everysec: recomendado por padrão, registre de forma assíncrona a cada segundo (valor padrão)

não: Sem sincronização, deixando para o sistema operacional decidir como sincronizar

  • aof-load-truncado sim ##769行

Ignore a última instrução potencialmente problemática

[root@localhost ~]#/etc/init.d/redis_6379 reiniciar

8. Problemas de desempenho

(1) Ver informações de memória

192.168.9.236:7001> informação memória

memoria_usada:1210776 Tamanho da memória usada, em bytes
memoria_usada_humana:1,15MExibido com unidades, em M
memoria_usada_rss:7802880Quanta memória o redis ocupa da perspectiva do sistema operacional?
memoria_usada_rss_humana:7,44MDisplay com unidades
memória máxima:1073741824Tamanho máximo de memória
memória máxima humana: 1,00 G Display com unidades

(2) Estratégia de reciclagem

política-de-memória-máxima: Estratégia de reciclagem

 volátil-lru: permite Redis Escolha o menos usado recentemente em todo o conjunto de dados chave Excluir

 volátil-ttlElimine de acordo com o prazo de validade da chave 

 volátil-aleatório: Selecione aleatoriamente os dados para eliminação da coleta de dados com tempo de expiração definido;

 todas as chaves-lru:usar LRU Os algoritmos eliminam dados de todos os conjuntos de dados;

 todas as chaves-aleatórias: Selecione aleatoriamente os dados para eliminação da coleta de dados;

 não despejo: Desativa a eliminação de dados (valor padrão)

Defina o tempo de expiração da chave

127.0.0.1:6379>expirar v1 10 v1 tem um tempo de expiração de 10 segundos

Observação:

quando Redis Precisa recuperar um devido à pressão de memória chave hora,Redis A primeira consideração não é reciclar os dados mais antigos, mas sim os dados menos utilizados recentemente. chave ou prestes a expirar chave Escolha um aleatoriamente entre chave, removido do conjunto de dados