php redis get all keys
Redis command to get all available keys?
Is there a Redis command for fetching all keys in the database? I have seen some python-redis libraries fetching them. But was wondering if it is possible from redis-client.
16 Answers 16
Try to look at KEYS command. KEYS * will list all keys stored in redis.
EDIT: please note the warning at the top of KEYS documentation page:
Time complexity: O(N) with N being the number of keys in the database, under the assumption that the key names in the database and the given pattern have limited length.
Updated for Redis 2.8 and above
As noted in the comments of previous answers to this question, KEYS is a potentially dangerous command since your Redis server will be unavailable to do other operations while it serves it. Another risk with KEYS is that it can consume (dependent on the size of your keyspace) a lot of RAM to prepare the response buffer, thus possibly exhausting your server’s memory.
Version 2.8 of Redis had introduced the SCAN family of commands that are much more polite and can be used for the same purpose.
The CLI also provides a nice way to work with it:
It can happen that using redis-cli, you connect to your remote redis-server, and then the command:
is not showing anything, or better, it shows:
(empty list or set)
If you are absolutely sure that the Redis server you use is the one you have the data, then maybe your redis-cli is not connecting to the Redis correct database instance.
As it is mentioned in the Redis docs, new connections connect as default to the db 0.
In my case KEYS command was not retrieving results because my database was 1. In order to select the db you want, use SELECT.
The db is identified by an integer.
I post this info because none of the previous answers was solving my issue.
Шпаргалка по Redis
Про Redis (официальный сайт, материалы на Хабре) написано много, но мне до сего дня не хватало материала, который послужил бы шпаргалкой по его практическому использованию, а так же справочником по базовым теоретическим моментам. Постараюсь заполнить этот пробел в богатой базе знаний Хабра.
Я поставил перед собой цель показать возможности Redis с помощью примеров кода. После публикации приму любые предложения по улучшению материала.
Здесь используется общение с сервером через консольный клиент, но, основываясь на приведенных примерах, можно легко найти реализацию этих примеров в клиентских библиотеках на вашем любимом языке.
Ключи
Типы данных Redis
Базовые операции
Подробности о командах, связанных с этой задачей можно найти в документации в разделах Keys и Strings.
Задача 2, время жизни объекта.
Подробности о командах, связанных с этой задачей можно найти в документации в разделах Keys и Strings.
Задача 3, pipelining, выполнение нескольких команд одним запросом.
Pipelining удобно использовать для оптимизации массовых вставок.
Подробности о командах, связанных с этой задачей можно найти в документации в разделе Transactions.
Строки/числа
Задача 5, продемонстрировать основные строковые операции.
Задача 6, продемонстрировать операции над числами.
Подробности о командах, связанных с этими задачами можно найти в документации в разделе Strings.
Списки
Задача 7, создать список, продемонстрировать основные операции над списками.
Подробности о командах, связанных с этой задачей можно найти в документации в разделе Lists.
Множества, упорядоченные множества
Задача 8, создать множество, продемонстрировать основные операции над множествами.
Подробности о командах, связанных с этой задачей можно найти в документации в разделе Sets.
Задача 9, создать упорядоченное множество и продемонстрировано основные операции над ним.
В упорядоченном множестве элементы сравниваются по дополнительному параметру «score».
Подробности о командах, связанных с этой задачей можно найти в документации в разделе Sorted sets.
Хеш-таблицы
Задача 10, Создать хеш-таблицу и продемонстрировать основные операции над хешами.
Подробности о командах, связанных с этой задачей можно найти в документации в разделе Hashes.
Pub/Sub, сообщения в Redis
Задача 11, подписаться на сообщения на одном клиенте и отправить сообщение из другого.
Приведем окна двух клиентов, в первом окне совершается подписка на сообщения и видно отправленное из второго окна сообщение.
Задача 12, подписаться на сообщения на одном клиенте и отправить сообщение из другого. Подписку осуществить с помощью шаблонов.
Приведем окна двух клиентов, в первом окне совершается подписка на сообщения и видно отправленное из второго окна сообщение.
Подробности о командах, связанных с этими задачами можно найти в документации в разделе Pub/Sub.
How to Get All Keys in Redis
Like other non-relational database engines, wrapping your mind around how Redis handles data structures and associations can sometimes be difficult. This is particularly true when Redis is compared to a more traditional relational databases with quarantined tables, each containing multiple rows and columns to house data.
Since Redis is non-relational, everything in the system is configured with basic key/value pairs at the simplest level. During development in particular, it can be tricky to keep track of everything that exists in the database already, so in this brief tutorial we’ll cover the method for retrieving all keys from a Redis database with some simple commands.
Most (But Not All) Objects Use a Key
For the vast majority of data storage with Redis, data will be stored in a simple key/value pair. This is best shown through the redis-cli (command line interface) using GET and SET commands.
Using Namespaces
That’s all well and good, but how do we add another book? We can’t reuse the same title and author keys or we’ll overwrite the existing data. Instead, we can use namespace syntax by using a : separator and giving each title or author entry a unique numeric key :
Now using GET requires adding the unique numeric key as well:
Retrieving All Existing Keys
As it turns out, every SET command we issued above created a new, unique key within our Redis database. To get a list of all current keys that exist, simply use the KEYS command:
By following KEYS with an asterisk ( * ) – which acts as a wildcard search – we’re asking Redis to retrieve all keys in the system. Thus, we not only see our two original title and author keys but also the four enumerated versions that followed as well.
The syntax following KEYS can be used to search for specific words or phrases within the key, or the exact match as well. Here we want all keys that contain the text ‘title’ :
CAUTION: As mentioned in the official documentation, it is advisable to avoid using the KEYS command on very large databases, but in particular avoid using it in a production environment. Since KEYS is returning potentially every key in the system, this can have a dramatic negative impact on performance.
Стартуем работу с Redis и PHP
Об этой статье
Данная статья не является руководством по работе с Redis (для этого можете посетить официальный сайт). В данной статье мы рассмотрим как связать Redis и PHP.
Установка Redis
Процесс установки абсолютно не вызывает трудностей. Просто следуйте инструкциям, изложенным на официальном сайте.
Установка Redis на Linux
Для установке Redis на Linux вам потребуется TCL. Запустите команду:
$ sudo apt-get install tcl
Для установки Redis:
$ wget http://download.redis.io/releases/redis-2.8.19.tar.gz
$ tar xzf redis-2.8.19.tar.gz
$ cd redis-2.8.19
$ make
Заметка: значение 2.8.19 замените на номер текущей стабильной версии.
Все бинарные файлы будут сохранены в каталоге SRC. Для запуска сервера:
Установка Redis на Windows
Для установки Redis на Windows просто скачайте последний пакет и следуйте инструкциям.
$ git clone git://github.com/nrk/predis.git
Подключение к Redis
Для начала подключаем автозагрузчик Redis. Затем помещаем код в блок try/catch. Подключение к локальному Redis выглядит несколько иначе, чем к удалённому.
Теперь, когда подключение произошло, можем приступать к работе с Redis.
Типы данных в Redis
Redis поддерживает целый ряд типов данных. Вы можете спросить какое это имеет значение для NOSQL базы данных? Это позволяет хранить данные в том виде, в котором это целесообразней и в некоторых случаях влияет на скорость доступа к данным.
Есть ещё и другие типы данных, такие как битмапы и иероглифы, но их мы рассматривать не будем.
Геттеры и сеттеры
Инкремент и декремент
Работа с списками
Для работы со списками вам понадобятся команды:
Просто использование списков:
Работа с хэш-таблицами
Как уже упоминалось, данный тип можно сопоставить с ассоциативными таблицами. Команды:
Работа с множествами
Список команд: – SADD : добавление числа N ключу – SREM : удаление числа N ключу – SISMEMBER : проверка существование значения – SMEMBERS : набор всех значений.
Работа с упорядоченными множествами
Мы рассмотрели лишь самые необходимые команды. Все остальные можно найти на сайте Redis.
Данный урок подготовлен для вас командой сайта ruseller.com
Источник урока: https://scotch.io/tutorials/getting-started-with-redis-in-php
Перевел: Станислав Протасевич
Урок создан: 24 Апреля 2015
Просмотров: 71227
Правила перепечатки
5 последних уроков рубрики «PHP»
Фильтрация данных с помощью zend-filter
Когда речь идёт о безопасности веб-сайта, то фраза «фильтруйте всё, экранируйте всё» всегда будет актуальна. Сегодня поговорим о фильтрации данных.
Контекстное экранирование с помощью zend-escaper
Обеспечение безопасности веб-сайта — это не только защита от SQL инъекций, но и протекция от межсайтового скриптинга (XSS), межсайтовой подделки запросов (CSRF) и от других видов атак. В частности, вам нужно очень осторожно подходить к формированию HTML, CSS и JavaScript кода.
Подключение Zend модулей к Expressive
Expressive 2 поддерживает возможность подключения других ZF компонент по специальной схеме. Не всем нравится данное решение. В этой статье мы расскажем как улучшили процесс подключение нескольких модулей.
Совет: отправка информации в Google Analytics через API
Предположим, что вам необходимо отправить какую-то информацию в Google Analytics из серверного скрипта. Как это сделать. Ответ в этой заметке.
Подборка PHP песочниц
Подборка из нескольких видов PHP песочниц. На некоторых вы в режиме online сможете потестить свой код, но есть так же решения, которые можно внедрить на свой сайт.
Get all keys from Redis Cache database
Redis documentation talks about KESY command but do stackexchange.Redis have implementation for that command.
Debugging through the connection.GetDataBase() instance, I don’t see any method / property for that.
5 Answers 5
Function that you need is under IServer interface, and can be reached with:
Try using this code snippet, it worked for me:
You need db to distinguish where to look for keys. So the last line of MTZ4 answer then becomes:
RedisKey[] keys = connection.GetServer(endPoint).Keys(database: db.Database, pattern: «*»).ToArray();
where db.Database is the numeric identifier of the Redis Database you want to query.
ASP.Net Core 3.1
In Startup.cs this is how you would be able to register Redis Client ready to be injected in your workflow code.
DbHelper.GetRedisConnectionHost(Options.IsDevDb()) :>>> is my way to resolve the connection information/string for my Redis instance respective to my environment. You can have your own way here for that or you can hard-code it here if you like to begin with.
Method 1