Ответы:
Попробуйте посмотреть на KEYS
команду. KEYS *
перечислит все ключи, хранящиеся в Redis.
РЕДАКТИРОВАТЬ: пожалуйста, обратите внимание на предупреждение в верхней части KEYS
страницы документации:
Сложность по времени: O (N), где N - это количество ключей в базе данных, при условии, что имена ключей в базе данных и данный шаблон имеют ограниченную длину.
ОБНОВЛЕНИЕ (V2.8 или выше): SCAN
является превосходной альтернативой KEYS
, в том смысле, что оно не блокирует сервер и не потребляет значительных ресурсов. Предпочитаю использовать его.
KEYS
при запросе большого набора данных возможно более длительное время блокирование сервера
Обновлено для Redis 2.8 и выше
Как отмечено в комментариях к предыдущим ответам на этот вопрос, KEYS
это потенциально опасная команда, поскольку ваш сервер Redis будет недоступен для выполнения других операций, пока он его обслуживает. Другой риск KEYS
заключается в том, что он может потреблять (в зависимости от размера вашего пространства ключей) много оперативной памяти для подготовки буфера ответов, что может привести к исчерпанию памяти вашего сервера.
Версия 2.8 Redis представила семейство команд SCAN , которые намного более вежливы и могут использоваться для той же цели.
CLI также предоставляет хороший способ работы с ним:
$ redis-cli --scan --pattern '*'
Может случиться так, что используя redis-cli, вы подключитесь к удаленному redis-серверу, а затем выполните команду:
KEYS *
ничего не показывает, или лучше, он показывает:
(empty list or set)
Если вы абсолютно уверены, что сервер Redis, который вы используете, является тем, у которого есть данные, то, возможно, ваш redis-cli не подключается к правильному экземпляру базы данных Redis.
Как упоминается в Redis docs, новые соединения по умолчанию подключаются к базе данных 0 .
В моем случае KEYS
команда не получала результаты, потому что моя база данных была 1. Чтобы выбрать нужную БД, используйте SELECT .
БД обозначается целым числом.
SELECT 1
KEYS *
Я публикую эту информацию, потому что ни один из предыдущих ответов не решил мою проблему.
-> Получить все ключи от Redis-Cli
-redis 127.0.0.1:6379> keys *
-> Получить список шаблонов
-redis 127.0.0.1:6379> keys d??
Это произведет ключи, которые начинаются с 'd' с тремя символами.
-redis 127.0.0.1:6379> keys *t*
Это позволит получить ключи с символами «т» в ключе
-> Подсчет ключей из командной строки по
-redis-cli keys * |wc -l
-> Или вы можете использовать dbsize
-redis-cli dbsize
key *t*
в keys *t*
.
Взгляните на следующий Redis Cheat Sheet . Чтобы получить подмножество ключей redis с помощью redis-cli, я использую команду
KEYS "prefix:*"
Да, вы можете получить все ключи с помощью этого
var redis = require('redis');
redisClient = redis.createClient(redis.port, redis.host);
redisClient.keys('*example*', function (err, keys) {
})
SCAN не требует от клиента загрузки всех ключей в память, как это делает KEYS. SCAN дает вам итератор, который вы можете использовать. У меня были записи 1B в моем Redis, и я никогда не мог получить достаточно памяти, чтобы вернуть все ключи одновременно.
Вот фрагмент кода Python, чтобы получить все ключи из магазина, соответствующие шаблону, и удалить их:
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 *
где * - шаблон для отображения всех ключей
redis-cli -h <host> -p <port> keys '*'
KEYS шаблон
Доступна с 1.0.0.
Сложность по времени: O (N), где N - это количество ключей в базе данных, при условии, что имена ключей в базе данных и данный шаблон имеют ограниченную длину.
Возвращает все ключи, соответствующие шаблону.
Предупреждение. Эту команду не рекомендуется использовать, поскольку она может ухудшить производительность при ее выполнении для больших баз данных вместо KEYS, которые вы можете использовать SCAN или SETS .
Пример использования команды KEYS:
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"
Если ваш редис является кластером, вы можете использовать этот скрипт
#!/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"
Чтобы получить все ключи, доступные на сервере redis, вам нужно открыть redis-cli и набрать:
KEYS *
Чтобы получить дополнительную помощь, посетите эту страницу:
Эта ссылка
Мы должны использовать --scan --pattern с redis 2.8 и более поздними версиями.
Вы можете попробовать использовать эту оболочку поверх Redis-Cli. https://github.com/VijayantSoni/redis-helper
Если вы используете Laravel Framework, вы можете просто использовать это:
$allKeyList = Redis::KEYS("*");
print_r($allKeyList);
В Core PHP:
$redis = new Redis();
$redis->connect('hostname', 6379);
$allKeyList = $redis->keys('*');
print_r($allKeyList);
Вы можете просто подключиться к вашему серверу Redis с помощью Redis-Cli, выбрать вашу базу данных и ввести KEYS *, помните, что он даст вам все ключи, присутствующие в выбранной базе данных Redis.
redis-cli keys "*"