Remote Dictionary Server, или для краткости Redis, — это бесплатная база данных в оперативной памяти с открытым исходным кодом. Redis — это однопоточная база данных NoSQL, созданная для обеспечения высокой производительности и малой задержки между чтением и записью данных. Он использует пары ключ-значение для хранения данных.
Хотя данные хранятся в системной памяти, вы можете добавить постоянство, выгружая сохраненные данные на диск и загружая их при необходимости.
В этой статье мы познакомим вас с ключевыми концепциями Redis и покажем, как использовать Redis с языком программирования Python.
Установка Redis
Первый шаг — настроить инструменты разработки. В этой статье мы будем использовать систему Debian 11 Linux.
Откройте терминал и добавьте официальные репозитории Redis как:
sudo apt-get update sudo apt-get install curl gnupg -y curl https://packages.redis.io/gpg | sudo apt-key add - echo "deb https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list sudo apt-get update sudo apt-get install redis -y
После установки Redis запустите сервер с помощью команды.
redis-server
Вы также можете использовать systemctl для запуска сервера Redis с помощью команды, как показано ниже:
sudo service redis-server start
Основы Redis
Прежде чем погрузиться в использование Python для работы с базой данных Redis, давайте сначала напомним, как использовать Redis с помощью интерфейса командной строки.
Подключение к кластеру.
После запуска сервера Redis откройте новый сеанс терминала и введите клиент командной строки Redis как:
$ redis-cli 127.0.0.1:6379>
После того, как вы запустите команду redis-cli, вы должны получить приглашение, показывающее IP-адрес и порт для сервера Redis.
Переключение «баз данных»
Redis не работает как обычная реляционная база данных. Тем не менее, он содержит концепцию баз данных, которые представляют собой изолированные наборы пар ключ-значение. В отличие от базы данных в реляционных базах данных, в Redis база данных не имеет схем, таблиц или строк.
В Redis мы используем значения индекса, такие как 0, для доступа к первой базе данных. Redis не предоставляет настраиваемых имен, таких как sample_database, как это предусмотрено в традиционных базах данных.
Чтобы выбрать конкретную базу данных, используйте команду SELECT, за которой следует индекс базы данных для доступа к ней.
Например, чтобы выбрать базу данных 10.
127.0.0.1:6379[1]> SELECT 9 OK
Примечание. Индексы базы данных в Redis начинаются с 0 до 15. Если вы попытаетесь получить доступ к индексу выше 16, вы получите ошибку вне допустимого диапазона.
127.0.0.1:6379[15]> SELECT 16 (error) ERR DB index is out of range
Установка значений
Как мы уже упоминали, Redis использует нотацию «ключ-значение» для хранения данных. Вы можете добавить новые данные с помощью команды SET, разделив ключ и значения пробелом.
Например:
SET name "John" OK
Если команда Redis выполняется успешно, вы должны увидеть [OK].
Хорошо убедиться, что вы указали ключ и значение в команде SET. В противном случае вы получите ошибку с неправильным количеством аргументов, как показано:
127.0.0.1:6379[15]> SET novalue (error) ERR wrong number of arguments for 'set' command
Получение значений
Вы можете получить значения, хранящиеся на сервере Redis, с помощью команды GET и имени ключа. Например, чтобы получить значение ключа name, мы можем:
GET name "John"
Убедитесь, что указанный ключ существует на сервере. Если вы укажете несуществующий ключ, вы получите нулевой результат как:
GET nothere (nil)
Удаление ключей
В Redis вы можете удалить ключ и связанные с ним данные, используя команду DEL и имя ключа.
Например:
DEL name (integer) 1
Использование Python для работы с Redis
Хотя вы можете создать свою библиотеку для работы с Redis, обычной практикой является использование уже имеющихся инструментов для выполнения таких задач.
Вы можете просмотреть каталог клиентов Redis для поиска подходящей библиотеки.
https://redis.io/clients#python
В этом примере мы будем использовать redis-py, поскольку он активно поддерживается и прост в установке и использовании.
Установка Python 3
Прежде чем продолжить, убедитесь, что в вашей системе установлен Python. Откройте терминал и введите команду:
python3 --version -bash: Python: command not found
Если вы получаете сообщение об ошибке «команда не найдена», вам необходимо установить Python.
Используйте команды:
sudo apt update sudo apt install python3.9
Приведенные выше команды обновят репозитории программного обеспечения и установят версию Python 3.9. После завершения убедитесь, что у вас правильная версия Python.
python3 --version Python 3.9.2
Установить Pip
Чтобы установить пакет redis-py, нам нужно убедиться, что у нас установлен pip. Откройте терминал и введите команду:
sudo apt-get install python3-pip
Установка Redis-Py
После установки pip3 введите команду ниже, чтобы установить пакет redis-py.
sudo pip3 install redis
Использование пакета Redis-Py.
Чтобы проиллюстрировать, как работать с Redis с помощью пакета Python, мы реплицируем операции из раздела основ Redis.
Начнем с подключения к Redis.
Создайте файл Python и добавьте показанный ниже код для подключения к кластеру Redis.
import redis # create connection to the redis cluster r = redis.Redis(host='localhost', port=6379)
Как только у нас будет соединение с сервером, мы можем приступить к выполнению операций.
ПРИМЕЧАНИЕ. Файл будет подключаться к базе данных с индексом 0. Вы можете указать целевой индекс, установив параметр db как:
r = redis.Redis(host='localhost', port=6379, db=10)
В приведенном выше примере будет выполнено подключение к базе данных с индексом 10.
Чтобы создать пару ключ-значение с помощью пакета Python, вы можете:
r.set("name", "John Doe")
Строка выше примет первые аргументы как ключ и значение соответственно.
Чтобы получить значения, используйте функцию get как:
r.get("name") print name
Вышеупомянутый запрос вернет значение в указанном ключе в виде закодированного значения:
b'John Doe'
Вы можете использовать функцию декодирования для декодирования значения.
print (name.decode()) John Doe
Чтобы удалить ключ и соответствующие данные, используйте функцию удаления, как показано:
r.delete("name")
Если вы получите значение, хранящееся в удаленном ключе, Python вернет значение None.
Вывод
В этой статье мы подробно рассмотрим работу с базой данных Redis. Redis — мощный инструмент, который может оказаться незаменимым в высокопроизводительных средах. Изучите документацию, чтобы узнать, как работать с Redis и пакетом Redis-Py.