Usando os comandos de scan 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 poderosos recursos é a capacidade de iterar incrementalmente através de conjuntos de dados usando comandos de scan. Isso é particularmente útil quando se lida com grandes conjuntos de dados, pois permite a recuperação eficiente de dados sem sobrecarregar o servidor. Para usuários em um servidor Linux dedicado, o uso de comandos scan 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 scan 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 scan?
Os comandos de scan 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 scan retornam um pequeno número de elementos de cada vez. Isto minimiza o impacto no desempenho e permite uma iteração incremental.
Comandos de pesquisa de chaves
- SCAN: Itera através de chaves no espaço de chaves.
- SSCAN: Itera através de elementos num conjunto.
- HSCAN: Itera através de campos e valores num hash.
- ZSCAN: Itera através de membros e pontuações num conjunto ordenado.
Sintaxe básica dos comandos de pesquisa
Cada comando de pesquisa tem uma sintaxe semelhante:
- cursor: Um número inteiro que representa a posição a partir da qual se inicia a digitalização. 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
Para CentOS/RHEL, use:
Uma vez instalado, inicie o servidor Redis:
Conectando ao Redis
Abra o seu terminal e ligue-se à sua instância Redis utilizando o 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 Redis, você pode usar:
Este comando retornará um cursor e uma lista de chaves.
Exemplo 2: Utilizar MATCH para filtrar teclas
Se quiser encontrar chaves que correspondam a um padrão específico, como chaves que começam com “user:”, pode usar:
Este comando devolve apenas as chaves que começam com “user:”.
Exemplo 3: Especificar COUNT
Para indicar quantas chaves o Redis deve retornar em cada iteração, é possível especificar uma contagem:
Isso tentará retornar aproximadamente 10 chaves. Note-se que o número real devolvido pode ser inferior a este.
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" # Processa o resultado conforme necessário
cursor=$(echo "$resultado" | awk 'NR==1{imprimir $1}') # Atualizar o cursor
if [[ "$cursor" == "0" ]]; then
break # Pára quando o cursor volta a ser 0
fi
done
Utilizar o comando SSCAN
O comando SSCAN é utilizado para iterar através dos elementos de um conjunto. A sua sintaxe é semelhante à do comando SCAN:
Exemplo de SSCAN
Passo 1: Criar um conjunto e adicionar elementos
Vamos criar um conjunto chamado myset e adicionar-lhe alguns elementos: