Compartilhamento de tecnologia

03-Configuração e otimização do NoSQL Redis

2024-07-12

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

1. Comparação geral entre redis e memcache

1.Desempenho

Redis: usa apenas um único núcleo. Em média, o Redis tem desempenho superior ao Memcached ao armazenar pequenos dados em cada núcleo.

Memcached: você pode usar vários núcleos e, em dados de mais de 100k, o desempenho do Memcached é superior ao do Redis.

2. Eficiência no uso da memória

MemCached: Usando armazenamento simples de valor-chave, o Memcached tem maior utilização de memória.

Redis: Se uma estrutura hash for usada para armazenamento de valores-chave, sua utilização de memória será maior que a do Memcached devido à sua compactação combinada.

3. Espaço de memória e tamanho dos dados

MemCached: A memória máxima pode ser modificada, usando o algoritmo LRU. O tamanho de um único valor-chave no Memcached é limitado e um valor suporta apenas no máximo 1 MB.

Redis: adiciona recursos de VM e rompe as limitações da memória física. O Redis oferece suporte a um tamanho máximo de valor-chave único de 512 MB.

4. Suporte à estrutura de dados

MemCached: Estrutura de dados única, usada apenas para armazenar dados em cache.

Redis: oferece suporte a tipos de dados mais ricos. Redis não apenas oferece suporte a dados simples do tipo k/v, mas também fornece armazenamento de estruturas de dados como lista, conjunto, zset e hash.

Operações avançadas em dados podem ser executadas diretamente no lado do servidor, o que pode reduzir os tempos de E/S da rede e o volume de dados.

5.Confiabilidade

Memcached: É apenas um cache de memória com baixos requisitos de confiabilidade. MemCached não oferece suporte à persistência de dados. Os dados desaparecem após uma queda de energia ou reinicialização, mas a estabilidade é garantida.

Redis: possui altos requisitos de confiabilidade, oferece suporte à persistência e recuperação de dados, permite pontos únicos de falha e também afeta algum desempenho. Suporta backup de dados, ou seja, backup de dados no modo mestre-escravo. Redis suporta persistência de dados. Ele pode salvar dados na memória em disco e carregá-los novamente para uso ao reiniciar.

6. Cenários de aplicação

Memcached: reduz a carga do banco de dados e melhora o desempenho em cache de sistemas dinâmicos, adequado para cenários de mais leitura, menos gravação e grande volume de dados;

Redis: Adequado para sistemas que exigem alta eficiência de leitura e gravação, negócios complexos de processamento de dados e altos requisitos de segurança.

2. Casos experimentais

1. instalação do redis

Desligue o firewall primeiro

  1. 先把防火墙关掉
  2. systemctl stop firewalld
  3. set setenforce 0
  4. [root@localhost ~]# yum -y install gcc* zlib-devel
  5. 解压 redis包
  6. [root@localhost ~]# tar xvzf redis-4.0.9.tar.gz
  7. [root@localhost ~]# cd redis-4.0.9/
  8.  make

  1. 2:查看进程
  2. [root@localhost utils]# netstat -anpt | grep redis

  1. 3:redis服务控制
  2. [root@localhost ~]#/etc/init.d/redis_6379 stop
  3. [root@localhost ~]#/etc/init.d/redis_6379 start
  4. [root@localhost ~]#/etc/init.d/redis_6379 restart
  5. [root@localhost ~]#/etc/init.d/redis_6379 status

  1. 4.配置参数的修改
  2. [root@localhost ~]#vim /etc/redis/6379.conf
  3. bind 127.0.0.1 192.168.10.101 //监听的主机地址
  4. port 6379 //端口
  5. daemonize yes //启用守护进程
  6. pidfile /var/run/redis_6379.pid //指定 PID 文件
  7. loglevel notice //日志级别
  8. logfile /var/log/redis_6379.log //指定日志文件
  9. [root@localhost~]#/etc/init.d/redis_6379 restart
  10. [root@localhost utils]# netstat -anpt | grep redis

  1. 二:Redis 命令工具
  2.  redis-server:用于启动 Redis 的工具;
  3.  redis-benchmark:用于检测 Redis 在本机的运行效率;
  4.  redis-check-aof:修复 AOF 持久化文件;
  5.  redis-check-rdb:修复 RDB 持久化文件;
  6.  redis-cli:Redis 命令行工具。

Comandos redis comuns:

definir criar
obter visualização
chaves * ver tudo
renomear (substituirá)
renamenx (verifique se existe o mesmo nome e, em seguida, decida se deseja executar o comando rename)
del (o comando pode excluir a chave especificada do banco de dados atual)
existe (o comando pode determinar se o valor da chave existe)
type (use o comando type para obter o tipo de valor correspondente à chave)
selecione (trocar banco de dados)
mover (mover dados)
flushdb (limpa os dados atuais do banco de dados)
flushall (limpa todos os dados do banco de dados)

  1.  -p:指定服务器端口;
  2.  -s:指定服务器 socket;
  3.  -c:指定并发连接数;
  4.  -n:指定请求数;
  5.  -d:以字节的形式指定 SET/GET 值的数据大小;
  6.  -k:1=keep alive 0=reconnect;
  7.  -r:SET/GET/INCR 使用随机 key, SADD 使用随机值;
  8.  -P:通过管道传输<numreq>请求;
  9.  -q:强制退出 redis。仅显示 query/sec 值;
  10.  --csv:以 CSV 格式输出;
  11.  -l:生成循环,永久执行测试;
  12.  -t:仅运行以逗号分隔的测试命令列表;
  13.  -I:Idle 模式。仅打开 N 个 idle 连接并等待。

Cinco: persistência do 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 ...Tempo de registro do 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).

1: A diferença entre RDB e AOF

(1) O que é RDB?

O método padrão

A persistência RDB é o processo de gerar um instantâneo dos dados do processo atual e salvá-los no disco rígido. O processo de acionamento da persistência RDB é dividido em acionamento manual e acionamento automático.

Mecanismo de disparo: O disparo manual corresponde aos comandos save e bgsave respectivamente.

Comando save: bloqueia o servidor Redis atual até que o processo RDB seja concluído. Para instâncias com grande quantidade de memória, isso causará bloqueio de tempo. Não recomendado para uso em ambientes online.

Comando bgsave: O processo Redis executa a operação fork (função usada para criar um processo) para criar um processo filho. O processo de persistência RDB é responsável pelo processo filho e termina automaticamente após a conclusão. O bloqueio ocorre apenas durante a fase de bifurcação.

(2) Vantagens e desvantagens do RDB:

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.

O Redis carrega RDB e recupera dados muito mais rápido que o método AOF.

Desvantagens do RDB:

Os dados no modo RDB não podem alcançar persistência em tempo real/persistência de segundo nível. Porque toda vez que o bgsave é executado, uma operação de bifurcação é executada para criar um processo filho, que é uma operação pesada e o custo da execução frequente é muito alto.

Os arquivos RDB são salvos em um formato binário específico Durante a evolução das versões do Redis, existem vários formatos de versões do RDB. Há um problema de que a versão antiga do serviço Redis não é compatível com a nova versão do formato RDB.

2. O que é AOF?

Persistência AOF (anexar apenas arquivo): registre cada comando de gravação em um log independente e, em seguida, execute novamente o comando no arquivo AOF para restaurar os dados ao reiniciar. A principal função do AOF é resolver o problema de persistência de dados em tempo real. Agora é a corrente principal da persistência do Redis.

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 um arquivo persistente precisar ser carregado após a reinicialização do redies, os 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.

3: 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:

  • anexar apenas sim: Habilita 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, sempre que os dados forem alterados, eles serão gravados no disco imediatamente

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

(2) reescrita AOF

a fim de resolver AOF Se o tamanho do arquivo continuar a aumentar, os usuários poderão reportar Redis enviar BGREWRITEAOFOrdem.BGREWRITEAOF O comando será removido via AOF comandos redundantes no arquivo para substituir (reescreverAOFarquivo, faça AOF Mantenha o tamanho do arquivo o menor possível.

127.0.0.1:6379&gt; bgrewriteaof

Reescrita de arquivo somente anexado em segundo plano iniciada

# Quando o log for BGREWRITEAOF,seno-appendfsync-na-reescritaDefinido como sim, o que significa que novas operações de gravação não serão sincronizadas com fsync, mas serão armazenadas apenas temporariamente no buffer. , para evitar conflitos de operação de E/S de disco, aguarde até que a reescrita seja concluída antes de gravar. O padrão no Redis é não

no-appendfsync-on-rewrite não

# Quando o tamanho do arquivo AOF atual é duas vezes maior que o tamanho do arquivo AOF durante a última reescrita do log, ocorre a operação BGREWRITEAOF.

auto-aof-rewrite-porcentagem 100

Observação:

100Refere-seaofA taxa de crescimento do arquivo refere-se à taxa de crescimento do arquivo AOF atual em comparação com a última reescrita.100é duas vezes

#O valor mínimo do arquivo AOF atual para executar o comando BGREWRITEAOF para evitar BGREWRITEAOF frequente devido ao pequeno tamanho do arquivo quando o Reids é iniciado pela primeira vez.

auto-aof-rewrite-tamanho-mínimo 64mb

Seis: Gestão de desempenho

1: Ver informações de memória

192.168.9.236:7001> informação memória

used_memory:1210776 #O tamanho da memória usada,em bytes
used_memory_human:1.15M # Display com unidade,em M
used_memory_rss:7802880 # Quanta memória o redis ocupa da perspectiva do sistema operacional?
used_memory_rss_human:7.44M # Exibição com unidade
maxmemory:1073741824 # Tamanho máximo da memória
maxmemory_human:1.00G # Display com unidade

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-ttlde acordo comchaveprazo de validade para eliminação

Ø 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)

Observação:

Defina o tempo de expiração da chave

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

redis definir senha

1. Método de configuração

Método 1: Defina a senha por meio do arquivo de configuração redis.conf

Encontre a palavra-chave requirepass, seguida da senha. Ela é comentada por padrão, ou seja, nenhuma senha é exigida por padrão, como segue:

  

 Abra o comentário, defina-o como sua própria senha e reinicie

Método 2: Definir senha nomeando

Use redis-cli para conectar-se ao redis e execute o seguinte comando

config set requirepass 123456

Após a conclusão da execução, não há necessidade de reiniciar. Você precisará inserir sua senha ao sair do cliente e fazer login novamente.

2. Método de conexão

1. Digite a senha ao conectar

[root@localhost bin]# ./redis-cli -a 123456

2. Conecte-se primeiro e depois digite a senha

[root@localhost bin]# ./redis-cli127.0.0.1:6379> auth 123456

3. Método de fechamento

[root@localhost bin]# ./redis-cli -a 123456 shutdown

4. Diferença

1) A senha definida pela modificação do arquivo de configuração terá efeito permanente; a senha definida pelo comando terá efeito temporário e se tornará inválida após a reinicialização;

2) A modificação da senha definida no arquivo de configuração requer uma reinicialização para ter efeito; use a senha definida pelo comando para entrar em vigor após efetuar logout e login novamente, e ela se tornará inválida após a reinicialização.

3) A prioridade do comando é maior que a prioridade do arquivo de configuração