Відповіді:
Спробуйте подивитися на 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, нові з'єднання підключаються як db 0 за замовчуванням .
У моєму випадку KEYS
команда не отримувала результатів, оскільки моя база даних була 1. Для того, щоб вибрати потрібний db, використовуйте SELECT .
Db ідентифікується цілим числом.
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*
Це отримає ключі з символом 't' у відповідності
-> Порахуйте ключі з командного рядка за
-redis-cli keys * |wc -l
-> Або ви можете використовувати dbsize
-redis-cli dbsize
key *t*
це keys *t*
.
Погляньте на наступні шпаргалки Redis . Для отримання підмножини клавіш 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"
Якщо ваш Redis - це кластер, ви можете використовувати цей сценарій
#!/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 із редакцією 2.8 та пізніших версій.
Ви можете спробувати використовувати цю обгортку поверх redis-cli. https://github.com/VijayantSoni/redis-helper
Якщо ви використовуєте Laravel Framework, тоді ви можете просто скористатися цим:
$allKeyList = Redis::KEYS("*");
print_r($allKeyList);
В основній PHP:
$redis = new Redis();
$redis->connect('hostname', 6379);
$allKeyList = $redis->keys('*');
print_r($allKeyList);
Ви можете просто підключитися до вашого сервера redis за допомогою redis-cli, вибрати свою базу даних та ввести KEYS *, запам’ятайте, вона надасть вам усі ключі, що знаходяться у вибраній базі даних redis
redis-cli keys "*"