В этой статье мы разберем что такое Redis и как начать с ней работать.
Содержание
Что такое Redis?
Как сказано в Википедии, Redis – это noSQL база данных, основанная на хранении данных в хэшированных (ключ/значение) таблицах.
Установка Redis
Вы можете загрузить и установить Redis на свой компьютер под управлением Windows, Linux или Mac здесь. В данном руководстве мы будем использовать Docker, так как это быстрее и проще. Для этого урока вам не нужно обладать знаниями о Docker, достаточно установить его и выполнить описанные ниже шаги:
Чтобы использовать Redis из Docker, сначала нужно загрузить образ, для этого запускаем следующую команду:
docker pull redis:latest
Code language: CSS (css)
Как только это будет сделано, мы поднимем контейнер с помощью следующей команды:
docker run --rm -p 6379:6379 --name testredis redis
Code language: CSS (css)
С ее помощью мы создаем контейнер, который удалит всю информацию о вас, когда мы его закроем. Мы будем обращаться к нему через порт 6379, назовем контейнер testredis. Он будет использовать образ Redis, который мы загрузили ранее.
Теперь нам просто нужно создать новую вкладку в терминале и запустить следующую команду для доступа к консоли Redis:
docker exec -it testredis redis-cli
Сохранение и чтение данных
Когда наша база данных работает, пришло время посмотреть, как добавить в нее данные. Для этого мы воспользуемся командой set. Добавим ключ и значение следующим образом:
set <ключ> <значение>
Code language: HTML, XML (xml)
Пример
set name Ивананн
Code language: JavaScript (javascript)
Эта команда создаст ключ name со значением Иван. Если нам нужно добавить пробелы и в ключ, и в значение, мы должны заключить эти данные в кавычки:
set data "Привет мир"
set "Привет мир" data
Code language: PHP (php)
Если мы хотим перезаписать существующий ключ, нам достаточно повторно запустить установку с ключом и новым значением, что приведет к перезаписи значения этого ключа.
Свойства ключей и значений
Ключи и значения всегда будут храниться в виде строк.
Максимальный размер обоих может составлять 512 МБ.
Рекомендуется, чтобы при создании ключей с несколькими значениями данных они разделялись двоеточием. Пример: posts:1:title.
Вы можете создать максимум 2^32 ключей (4 миллиарда).
Для извлечения ранее сохраненных значений нам достаточно использовать команду get и имя ключа:
get name
Code language: JavaScript (javascript)
В результате будет возвращено Иван – данные, которые мы сохранили ранее.
Дополнительные возможности при сохранении ключей.
Когда мы создаем ключ, мы можем добавить дополнительные параметры для изменения его функциональности, это параметры NX и XX.
Если мы добавим в конце параметр NX, это приведет к тому, что если запись уже существует, она не будет перезаписана.
set <имя-ключа> <имя-значения-> NX
Code language: HTML, XML (xml)
Если мы хотим перезаписать значение только в том случае, когда ключ уже существует, мы используем параметр XX. Если ключ не существует, он не будет создан.
set <имя-ключа> <имя-значения-> XX
Code language: HTML, XML (xml)
Удаление ключей
Если мы хотим удалить один или несколько существующих ключей, мы используем команду del. Нам просто нужно набрать del и ключ (или ключи), которые мы хотим удалить, разделяя их пробелами:
del <имя-ключа1> <имя-ключа2> <имя-ключа3> и т.д.
Code language: HTML, XML (xml)
Время жизни ключа
Когда мы устанавливаем ключ, у нас есть возможность указать ему время жизни. Это можно сделать с помощью команды EX для определения времени в секундах и PX для определения его в миллисекундах.
set <имя-ключа> <данные> EX 10
Code language: HTML, XML (xml)
В данном случае мы указываем, что ключ будет жить в течение 10 секунд. По истечении этого времени он прекратит свое существование.
Если мы хотим реализовать это для миллисекунд, мы сделаем это так::
set <имя-ключа> <данные> PX 10
Code language: HTML, XML (xml)
Если мы уже создали ключ, но забыли определить время жизни, мы можем сделать это позже с помощью команды expire для секунд и pexpire, если мы хотим использовать миллисекунды:
expire <имя-ключа> 10
Code language: HTML, XML (xml)
Также может случиться так, что мы создаем ключ с определенным временем жизни, но передумываем и не хотим, чтобы он был удален по истечении этого времени. Чтобы решить эту проблему, мы воспользуемся командой persist:
persist <имя-ключа>
Code language: HTML, XML (xml)
В некоторых случаях мы будем определять ключи, и нам может понадобиться узнать оставшееся время. Чтобы увидеть его, мы используем команды ttl для отображения оставшегося времени в секундах и pttl в миллисекундах:
ttl <имя-ключа>
Code language: HTML, XML (xml)
Поиск в Redis с помощью SCAN
Если мы хотим выполнить поиск по ключу в Redis, мы можем использовать команду scan, которая позволяет нам передать страницу, текст для поиска и количество данных на странице. Чтобы выполнить поиск ключа, который начинается со слова test, мы можем сделать это следующим образом:
scan 0 match test* count 3
Первый параметр, который мы передаем, это номер страницы, в данном случае нам нужна первая страница, поэтому мы передаем число 0. Для поиска по слову мы сначала вводим match, а затем регулярное выражение, в данном случае test*, потому что нам нужны все ключи, начинающиеся со слова test. В конце мы добавляем счетчик, чтобы ограничить ответ 3 результатами. Если мы хотим увидеть следующие три результата, мы должны изменить положение курсора или страницы на следующий номер, в данном случае 1:
scan 1 match test* count 3
Заключение
Это руководство было посвящено Redis. Как вы видите, работать с этой базой данных довольно просто. В следующих уроках мы продолжим углубляться в то, что мы можем делать с Redis, и позже мы увидим практические примеры использования, чтобы увидеть весь ее потенциал.