Respostas:
Tente olhar para o KEYS
comando. KEYS *
listará todas as chaves armazenadas em redis.
EDIT: observe o aviso na parte superior da KEYS
página de documentação:
Complexidade de tempo: O (N) com N sendo o número de chaves no banco de dados, supondo que os nomes das chaves no banco de dados e o padrão fornecido tenham um comprimento limitado.
UPDATE (V2.8 ou superior): SCAN
é uma alternativa superior a KEYS
, no sentido de que não bloqueia o servidor nem consome recursos significativos. Prefere usá-lo.
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 risco KEYS
é 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:
$ redis-cli --scan --pattern '*'
Pode acontecer que, usando o redis-cli, você se conecte ao seu redis-server remoto e, em seguida, ao comando:
KEYS *
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.
SELECT 1
KEYS *
Postei essas informações porque nenhuma das respostas anteriores estava resolvendo meu problema.
-> Obtenha todas as chaves de redis-cli
-redis 127.0.0.1:6379> keys *
-> Obter lista de padrões
-redis 127.0.0.1:6379> keys d??
Isso produzirá chaves que começam com 'd' com três caracteres.
-redis 127.0.0.1:6379> keys *t*
Isso obterá chaves com o caractere 't' correspondente na chave
-> Contar chaves da linha de comando por
-redis-cli keys * |wc -l
-> Ou você pode usar dbsize
-redis-cli dbsize
key *t*
para keys *t*
.
Dê uma olhada no seguinte Redis Cheat Sheet . Para obter um subconjunto de chaves redis com o redis-cli, uso o comando
KEYS "prefix:*"
Sim, você pode obter todas as chaves usando este
var redis = require('redis');
redisClient = redis.createClient(redis.port, redis.host);
redisClient.keys('*example*', function (err, keys) {
})
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:
import redis
r = redis.StrictRedis(host='localhost', port=6379, db=0)
for key in r.scan_iter("key_pattern*"):
print key
redis-cli -h <host> -p <port> keys *
onde * é o padrão para listar todas as chaves
redis-cli -h <host> -p <port> keys '*'
Padrão de CHAVES
Disponível desde 1.0.0.
Complexidade de tempo: O (N) com N sendo o número de chaves no banco de dados, supondo que os nomes das chaves no banco de dados e o padrão fornecido tenham um comprimento limitado.
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:
redis> MSET firstname Jack lastname Stuntman age 35
"OK"
redis> KEYS *name*
1) "lastname"
2) "firstname"
redis> KEYS a??
1) "age"
redis> KEYS *
1) "lastname"
2) "age"
3) "firstname"
Se seu redis for um cluster, você poderá usar este script
#!/usr/bin/env bash
redis_list=("172.23.3.19:7001,172.23.3.19:7002,172.23.3.19:7003,172.23.3.19:7004,172.23.3.19:7005,172.23.3.19:7006")
arr=($(echo "$redis_list" | tr ',' '\n'))
for info in ${arr[@]}; do
echo "start :${info}"
redis_info=($(echo "$info" | tr ':' '\n'))
ip=${redis_info[0]}
port=${redis_info[1]}
echo "ip="${ip}",port="${port}
redis-cli -c -h $ip -p $port set laker$port '湖人总冠军'
redis-cli -c -h $ip -p $port keys \*
done
echo "end"
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 link
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
Se você estiver usando o Laravel Framework, poderá simplesmente usar o seguinte:
$allKeyList = Redis::KEYS("*");
print_r($allKeyList);
No PHP principal:
$redis = new Redis();
$redis->connect('hostname', 6379);
$allKeyList = $redis->keys('*');
print_r($allKeyList);
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.
redis-cli keys "*"