Teste suas habilidades em todos os nossos serviços de hospedagem e ganhe 15% de desconto!

Utilizar o código no ato da compra:

Skills
04.11.2024

Usando os comandos de verificação no Redis no Linux

O Redis, um armazenamento de estrutura de dados em memória de código aberto, é conhecido por sua velocidade e versatilidade como um banco de dados de valor-chave. Um de seus recursos poderosos é a capacidade de iterar incrementalmente através de conjuntos de dados usando comandos de varredura. Isto é particularmente útil quando se lida com grandes conjuntos de dados, uma vez que permite a recuperação eficiente de dados sem sobrecarregar o servidor. Para usuários em um servidor Linux dedicado, o uso de comandos de varredura no Redis pode melhorar o desempenho do manuseio de dados, permitindo o processamento preciso e otimizado de recursos do conjunto de dados. Neste artigo, exploraremos como usar efetivamente os comandos de varredura no Redis em um ambiente Linux, oferecendo exemplos detalhados e práticas recomendadas para gerenciar e recuperar dados em escala..

O que são comandos de varredura?

Os comandos de varredura no Redis fornecem uma maneira de iterar sobre chaves, conjuntos, hashes e conjuntos ordenados de maneira não bloqueante. Ao contrário do comando KEYS, que pode ser perigoso para grandes conjuntos de dados porque retorna todas as chaves correspondentes de uma só vez, os comandos de varredura retornam um pequeno número de elementos por vez. Isto minimiza o impacto no desempenho e permite uma iteração incremental

Comandos de pesquisa de chaves

  1. SCAN: Itera através das chaves no espaço de chaves.
  2. SSCAN: Itera através de elementos num conjunto.
  3. HSCAN: itera através de campos e valores em um hash.
  4. ZSCAN: Itera através de membros e pontuações num conjunto ordenado.

Sintaxe básica dos comandos de pesquisa

Cada comando de verificação tem uma sintaxe semelhante

SCAN cursor [MATCH pattern] [COUNT count]
#
  • cursor: Um número inteiro que representa a posição a partir da qual se inicia o varrimento. Para iniciar uma nova pesquisa, utilize 0.
  • MATCH pattern: (opcional) Um padrão para filtrar as chaves retornadas. Suporta padrões do tipo glob.
  • COUNT count: (opcional) Uma dica para o Redis sobre quantos elementos retornar em cada iteração.

Instalando o Redis no Linux

Antes de mergulharmos no uso dos comandos de verificação, certifique-se de que o Redis está instalado no seu sistema Linux. Para aqueles que usam um Servidor Dedicado Debian, a configuração do Redis é simples e pode melhorar a capacidade do servidor para lidar com o processamento de dados na memória de forma eficiente. Eis como instalar o Redis num sistema baseado em Debian, garantindo um ambiente estável optimizado para operações de elevado desempenho.

Seguindo estes passos, irá configurar o Redis de uma forma que aproveita os recursos e a estabilidade do seu servidor Debian dedicado, ideal para tarefas robustas de manipulação de dados

sudo apt update
sudo apt install redis-server

Para CentOS/RHEL, use

sudo yum install redis

Uma vez instalado, inicie o servidor Redis

sudo systemctl start redis

Conectando-se ao Redis

Abra seu terminal e conecte-se à sua instância Redis usando o Redis CLI

redis-cli

Agora é possível executar comandos do Redis na CLI

Usando o comando SCAN

Exemplo 1: SCAN básico

Para recuperar todas as chaves no banco de dados do Redis, você pode usar

SCAN 0#

Esse comando retornará um cursor e uma lista de chaves

Exemplo 2: Utilizar MATCH para filtrar chaves

Se quiser encontrar chaves que correspondam a um padrão específico, como chaves que começam com “user:”, pode usar

SCAN 0 MATCH username:*
#

Este comando devolve apenas as chaves que começam com “user:”

Exemplo 3: Especificando COUNT

Para indicar quantas chaves o Redis deve retornar em cada iteração, é possível especificar uma contagem

SCAN 0 COUNT 10

Isso tentará retornar aproximadamente 10 chaves. Note que o número real retornado pode ser menor que isso

Exemplo 4: Iterando por todas as chaves

Para iterar através de todas as chaves em múltiplas iterações, você precisa manter o controle do cursor retornado. Aqui está um exemplo simples de script de shell:

cursor=0
while true; do
result=$(redis-cli SSCAN myset $cursor MATCH apple:*)
echo "$result" # Process the result as needed
cursor=$(echo "$result" | awk 'NR==1{print $1}') # Update the cursor
if [[ "$cursor" == "0" ]]; then
break  # Stop when the cursor is back to 0
fi
done

Usando o comando SSCAN

O comando SSCAN é utilizado para iterar através dos elementos de um conjunto. A sua sintaxe é semelhante à do SCAN

SSCAN key cursor [MATCH pattern] [COUNT count]

Exemplo de SSCAN

Passo 1: Criar um conjunto e adicionar elementos

Vamos criar um conjunto chamado myset e adicionar-lhe alguns elementos

SADD myset "apple"
SADD myset "banana"
SADD myset "cherry"
SADD myset "date"
SADD myset "elderberry"
#

Etapa 2: usar o comando SSCAN

Agora que temos um conjunto chamado myset, podemos usar o comando SSCAN para iterar através de seus elementos

  1. Comando SSCAN básico: Suponha que você tenha um conjunto chamado “myset”. Para percorrer os seus elementos
    SSCAN myset 0#
  2. Utilizar MATCH: Para filtrar os elementos de um conjunto com base num padrão e adicionar alguns elementos que incluem a palavra “manga” e outras variações:
    SSCAN myset 0 MATCH mango:*#
  3. Iterar através de um conjunto:Pode utilizar um loop para iterar através de um conjunto:

#!/bin/bash
cursor=0
echo "Scanning through myset:"
while true; do
# Scan the set
result=$(redis-cli SSCAN myset $cursor)
# Print the elements returned by SSCAN
echo "$result"
# Update the cursor for the next iteration
cursor=$(echo "$result" | awk 'NR==1{print $1}')
# Break the loop if cursor is back to 0
if [[ "$cursor" == "0" ]]; then
break
fi
done
#

Executar o script

  1. Salve o script como scan_myset.sh.
  2. Torná-lo executável
    chmod +x scan_myset.sh
    #
  3. Executar o script
    ./scan_myset.sh

Utilizar os comandos HSCAN e ZSCAN

Comando HSCAN

O comando HSCAN itera através de campos e valores num hash

HSCAN key cursor [MATCH pattern] [COUNT count]#

O comando HSCAN é utilizado para iterar através de campos e valores num hash

Etapa 1: criar um hash e adicionar campos

  1. Crie um hash chamado myhash e adicione alguns campos a ele:
HSET myhash name "John Doe"
HSET myhash age "30"
HSET myhash occupation "Software Developer"
HSET myhash city "San Francisco"
HSET myhash country "USA"
#

Etapa 2: usar o HSCAN para iterar pelo hash

  1. Use o comando HSCAN para iterar pelos campos em myhash:
HSCAN myhash 0#

Comando ZSCAN

ZSCAN é um comando Redis usado para iterar através dos membros de um conjunto ordenado de forma incremental. Ele permite que você recupere membros junto com suas pontuações associadas de uma forma eficiente e sem bloqueio. Este comando é particularmente útil para trabalhar com grandes conjuntos ordenados onde buscar todos os membros de uma vez pode não ser prático. O comando ZSCAN itera através de membros e pontuações em um conjunto ordenado

ZSCAN key cursor [MATCH pattern] [COUNT count]
#

Etapa 1: Criar um conjunto ordenado e adicionar membros

Vamos criar um conjunto ordenado chamado mysortedset e adicionar alguns membros com pontuações

ZADD mysortedset 1 "apple"
ZADD mysortedset 2 "banana"
ZADD mysortedset 3 "cherry"
#

Comando ZSCAN básico:Para começar a analisar o conjunto ordenado, use

ZSCAN mysortedset 0

Etapa 2: Usando MATCH para filtrar membros (opcional)

Se pretender filtrar as barras devolvidas pelo ZSCAN, pode utilizar a opção MATCH. Por exemplo, para encontrar membros que contenham a letra “e”, pode executar

ZSCAN mysortedset 0 MATCH *e*#

Práticas recomendadas para utilização de comandos de digitalização

  1. Use SCAN em vez de KEYS: Evite usar o comando KEYS na produção, pois ele pode bloquear o servidor. Use SCAN para iteração sem bloqueio.
  2. Combine com MATCH e COUNT: Utilize as opções MATCH e COUNT para melhorar o desempenho e limitar o conjunto de resultados.
  3. Lidar com grandes conjuntos de dados: Ao lidar com grandes conjuntos de dados, processe as chaves em lotes usando cursores para gerenciar a memória de forma eficaz.
  4. Teste no desenvolvimento: Teste sempre a sua lógica de digitalização num ambiente de desenvolvimento para garantir que se comporta como esperado antes de a implementar na produção.

Conclusão

Usar os comandos de varredura no Redis permite iterar eficientemente através de grandes conjuntos de dados em um ambiente Linux sem sobrecarregar o servidor. Ao entender como usar SCAN, SSCAN, HSCAN e ZSCAN, é possível gerenciar e recuperar dados do Redis com eficiência. Esses comandos são essenciais para a criação de aplicativos escalonáveis que exigem processamento de dados em tempo real. Para obter mais informações e uso detalhado, consulte a documentação oficial do Redis e experimente esses comandos no seu ambiente Redis

Teste suas habilidades em todos os nossos serviços de hospedagem e ganhe 15% de desconto!

Utilizar o código no ato da compra:

Skills