Existe um comando Redis para buscar todas as chaves no banco de dados? Eu vi algumas bibliotecas python-redis buscando-as. Mas queria saber se é possível do redis-client.
redis
redis-cli
redis-commands
Lalith
fonte
fonte
redis-cli keys "*"
KEYS
tem o potencial de bloquear o servidor por mais tempo ao consultar um grande conjunto de dados #Atualizado para Redis 2.8 e superior
Conforme observado nos comentários das respostas anteriores a esta pergunta,
KEYS
é um comando potencialmente perigoso, pois o servidor Redis não estará disponível para realizar outras operações enquanto ele o servir. Outro riscoKEYS
é que ele pode consumir (dependendo do tamanho do seu espaço de chaves) muita RAM para preparar o buffer de resposta, esgotando a memória do servidor.A versão 2.8 do Redis havia introduzido a família de comandos SCAN, que são muito mais educados e podem ser usados para o mesmo objetivo.
A CLI também fornece uma boa maneira de trabalhar com ela:
fonte
Pode acontecer que, usando o redis-cli, você se conecte ao seu redis-server remoto e, em seguida, ao comando:
não está mostrando nada, ou melhor, mostra:
(empty list or set)
Se você tiver certeza absoluta de que o servidor Redis que você usa é o que possui os dados, talvez seu redis-cli não esteja se conectando à instância correta do banco de dados Redis.
Conforme mencionado nos documentos do Redis, novas conexões se conectam como padrão ao db 0 .
No meu caso, o
KEYS
comando não estava recuperando resultados porque meu banco de dados era 1. Para selecionar o banco de dados desejado, use SELECT .O banco de dados é identificado por um número inteiro.
Postei essas informações porque nenhuma das respostas anteriores estava resolvendo meu problema.
fonte
-> Obtenha todas as chaves de redis-cli
-> Obter lista de padrões
Isso produzirá chaves que começam com 'd' com três caracteres.
Isso obterá chaves com o caractere 't' correspondente na chave
-> Contar chaves da linha de comando por
-> Ou você pode usar
dbsize
fonte
key *t*
parakeys *t*
.Dê uma olhada no seguinte Redis Cheat Sheet . Para obter um subconjunto de chaves redis com o redis-cli, uso o comando
fonte
Sim, você pode obter todas as chaves usando este
fonte
O SCAN não exige que o cliente carregue todas as chaves na memória, como o KEYS. SCAN fornece um iterador que você pode usar. Eu tinha um registro de 1B nos meus redis e nunca consegui ter memória suficiente para retornar todas as chaves de uma só vez.
Aqui está um trecho de python para obter todas as chaves da loja que correspondem a um padrão e excluí-las:
fonte
onde * é o padrão para listar todas as chaves
fonte
redis-cli -h <host> -p <port> keys '*'
Padrão de CHAVES
Retorna todas as chaves correspondentes ao padrão.
Aviso: Este comando não é recomendado, pois pode prejudicar o desempenho quando executado em bancos de dados grandes, em vez de KEYS, você pode usar SCAN ou SETS .
Exemplo de comando KEYS a ser usado:
fonte
Se seu redis for um cluster, você poderá usar este script
fonte
Obter todas as chaves em Redis
Obtenha todas as chaves usando a opção --scan:
Liste todas as chaves usando o comando KEYS:
fonte
Para obter todas as chaves disponíveis no servidor redis, você deve abrir o redis-cli e digitar:
KEYS *
Para obter mais ajuda, visite esta página: Este linkfonte
Deveríamos estar usando --scan --pattern com redis 2.8 e posterior.
Você pode tentar usar esse invólucro em cima do redis-cli. https://github.com/VijayantSoni/redis-helper
fonte
Se você estiver usando o Laravel Framework, poderá simplesmente usar o seguinte:
No PHP principal:
fonte
Você pode simplesmente se conectar ao seu servidor redis usando redis-cli, selecionar seu banco de dados e digitar KEYS *, lembre-se de que ele fornecerá todas as chaves presentes no banco de dados redis selecionado.
fonte