Réponses:
Essayez de regarder la KEYS
commande. KEYS *
répertorie toutes les clés stockées dans redis.
EDIT: veuillez noter l'avertissement en haut de la page de KEYS
documentation:
Complexité temporelle: O (N) avec N étant le nombre de clés dans la base de données, sous l'hypothèse que les noms de clés dans la base de données et le modèle donné ont une longueur limitée.
MISE À JOUR (V2.8 ou supérieure): SCAN
est une alternative supérieure à KEYS
, dans le sens où elle ne bloque pas le serveur et ne consomme pas de ressources importantes. Préférez l'utiliser.
KEYS
a le potentiel de bloquer le serveur plus longtemps lors de l'interrogation d'un grand ensemble de données
Mis à jour pour Redis 2.8 et supérieur
Comme indiqué dans les commentaires des réponses précédentes à cette question, KEYS
est une commande potentiellement dangereuse car votre serveur Redis ne sera pas disponible pour effectuer d'autres opérations tant qu'il le servira. Un autre risque KEYS
est qu'il peut consommer (en fonction de la taille de votre espace de clés) beaucoup de RAM pour préparer le tampon de réponse, ce qui peut donc épuiser la mémoire de votre serveur.
La version 2.8 de Redis avait introduit le SCAN famille de commandes qui sont beaucoup plus polies et peuvent être utilisées dans le même but.
L'interface de ligne de commande fournit également un moyen agréable de travailler avec:
$ redis-cli --scan --pattern '*'
Il peut arriver qu'en utilisant redis-cli, vous vous connectiez à votre serveur redis distant, puis la commande:
KEYS *
ne montre rien, ou mieux, cela montre:
(empty list or set)
Si vous êtes absolument sûr que le serveur Redis que vous utilisez est celui dont vous disposez, alors peut-être que votre redis-cli ne se connecte pas à l'instance de base de données correcte de Redis.
Comme cela est mentionné dans les documents Redis, les nouvelles connexions se connectent par défaut à la base de données 0 .
Dans mon cas, la KEYS
commande ne récupérait pas les résultats car ma base de données était 1. Pour sélectionner la base de données souhaitée, utilisez SELECT .
Le db est identifié par un entier.
SELECT 1
KEYS *
Je poste cette information car aucune des réponses précédentes n'a résolu mon problème.
-> Obtenez toutes les clés de redis-cli
-redis 127.0.0.1:6379> keys *
-> Obtenir la liste des modèles
-redis 127.0.0.1:6379> keys d??
Cela produira des clés qui commencent par «d» avec trois caractères.
-redis 127.0.0.1:6379> keys *t*
Cela obtiendra les clés avec le caractère 't' correspondant à la clé
-> Compter les clés de la ligne de commande par
-redis-cli keys * |wc -l
-> Ou vous pouvez utiliser dbsize
-redis-cli dbsize
key *t*
à keys *t*
.
Jetez un œil à la feuille de triche Redis suivante . Pour obtenir un sous-ensemble de clés redis avec le redis-cli, j'utilise la commande
KEYS "prefix:*"
Oui, vous pouvez obtenir toutes les clés en utilisant ceci
var redis = require('redis');
redisClient = redis.createClient(redis.port, redis.host);
redisClient.keys('*example*', function (err, keys) {
})
SCAN n'exige pas que le client charge toutes les clés en mémoire comme le fait KEYS. SCAN vous donne un itérateur que vous pouvez utiliser. J'avais un enregistrement 1B dans mon redis et je n'ai jamais pu avoir assez de mémoire pour retourner toutes les clés à la fois.
Voici un extrait de python pour obtenir toutes les clés du magasin correspondant à un modèle et les supprimer:
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 *
où * est le modèle pour lister toutes les clés
redis-cli -h <host> -p <port> keys '*'
Motif KEYS
Disponible depuis 1.0.0.
Complexité temporelle: O (N) avec N étant le nombre de clés dans la base de données, sous l'hypothèse que les noms de clés dans la base de données et le modèle donné ont une longueur limitée.
Renvoie toutes les clés correspondant au modèle.
Avertissement: il n'est pas recommandé d'utiliser cette commande car elle peut nuire aux performances lorsqu'elle est exécutée sur de grandes bases de données au lieu de KEYS, vous pouvez utiliser SCAN ou SETS .
Exemple de commande KEYS à utiliser:
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"
Si votre redis est un cluster, vous pouvez utiliser ce 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"
Afin d'obtenir toutes les clés disponibles sur le serveur redis, vous devez ouvrir redis-cli et taper:
KEYS *
Pour obtenir plus d'aide, veuillez visiter cette page:
Ce lien
Nous devrions utiliser --scan --pattern avec redis 2.8 et versions ultérieures.
Vous pouvez essayer d'utiliser ce wrapper sur redis-cli. https://github.com/VijayantSoni/redis-helper
Si vous utilisez Laravel Framework, vous pouvez simplement utiliser ceci:
$allKeyList = Redis::KEYS("*");
print_r($allKeyList);
En Core PHP:
$redis = new Redis();
$redis->connect('hostname', 6379);
$allKeyList = $redis->keys('*');
print_r($allKeyList);
Vous pouvez simplement vous connecter à votre serveur redis en utilisant redis-cli, sélectionner votre base de données et taper KEYS *, n'oubliez pas que cela vous donnera toutes les clés présentes dans la base de données redis sélectionnée.
redis-cli keys "*"