Сегодня мы будем рассматривать такую важную тему, как использование Python вместе с Redis. Redis – это функциональное хранилище ключей, которое может использоваться в целом спектре сфер, а также для него характерна высокая скорость работы. Redis требует широкого рассмотрения, поэтому и наше руководство будет большим.
Как устанавливать Redis из исходников в разных операционных системах
Redis – это фактически будущее развития Python. Вернее, не сам Redis, а модуль для него. С его помощью можно вызывать команды для хранилища ключей, а также возвращать знакомые Python- объекты.
Итак, давайте рассмотрим пошагово процесс установки. Для начала необходимо скачать Redis, а потом непосредственно установить. Конечно, он адаптирован для Unix-систем (то бишь, Mac или Linux). Его использование на Windows довольно проблематично само по себе. Необходимо использовать форк, который устанавливается в качестве Windows Service.
Рассмотрим, как это делать на Linux. Для начала необходимо скачать исходный код Redis в форме архива.
$ redisurl="http://download.redis.io/redis-stable.tar.gz" $ curl -s -o redis-stable.tar.gz $redisurl
Потом следует переключиться на root-права, а потом распаковать исходный код архива в /usr/local/lib.
$ sudo su root $ mkdir -p /usr/local/lib/ $ chmod a+w /usr/local/lib/ $ tar -C /usr/local/lib/ -xzf redis-stable.tar.gz
Также пользователь может удалить непосредственно сам архив после того, как будет выполнена команда выше. Но это необязательно делать.
$ rm redis-stable.tar.gz
После выполнения описанных выше команд будет создана папка для исходников в /usr/local/lib/redis-stable/. Поскольку Redis разрабатывался с использованием языка C, то необходимо воспользоваться утилитой make для компоновки кода и установки приложения.
$ cd /usr/local/lib/redis-stable/ $ make && make install
С помощью второй команды выполняются сразу два действия:
- Сначала компилируется исходный код и компонуется.
- Далее эта команда берет бинарные файлы и выполняет их копирование в /usr/local/bin/. Следовательно становится возможным их запуск абсолютно с любого места (допустим, что usr/local/bin расположен в PATH).
Давайте приведем все шаги.
$ redisurl="http://download.redis.io/redis-stable.tar.gz" $ curl -s -o redis-stable.tar.gz $redisurl $ sudo su root $ mkdir -p /usr/local/lib/ $ chmod a+w /usr/local/lib/ $ tar -C /usr/local/lib/ -xzf redis-stable.tar.gz $ rm redis-stable.tar.gz $ cd /usr/local/lib/redis-stable/ $ make && make install
Этот набор инструкций описывает все действия, которые надо выполнить для установки Redis. После выполнения этих действий необходимо удостовериться, что Redis расположен в PATH, а также выполнить проверку его версии.
$ redis-cli --version redis-cli 5.0.3
Если с помощью вашего терминала найти redis-cli не удается, необходимо выполнить проверку, чтобы удостовериться в том, что /usr/local/bin/ расположен в вашей переменной среде PATH. Иначе просто добавьте ее.
Помимо redis-cli, make install приводит к множеству исполняемых файлов, которые находятся по описанному выше пути. Также данная команда приводит к одному symlink.
$ ls -hFG /usr/local/bin/redis-* | sort /usr/local/bin/redis-benchmark* /usr/local/bin/redis-check-aof* /usr/local/bin/redis-check-rdb* /usr/local/bin/redis-cli* /usr/local/bin/redis-sentinel@ /usr/local/bin/redis-server*
Необходимо учитывать исключительно redis-cli и redis-server, которые будут подробно рассмотрены немного позднее. Но перед этим необходимо выполнить базовую конфигурацию.
Детальная настройка сервера под Redis
Redis – это хранилище ключей, которое очень функционально. Следовательно, настроек также много. Несмотря на то, что его можно использовать непосредственно «как есть», все же рекомендуется создать первоначальную конфигурацию, которая будет связана с базой данных. Это также необходимо для обеспечения большей безопасности хранения информации.
$ sudo su root $ mkdir -p /etc/redis/ $ touch /etc/redis/6379.conf
После выполнения этих команд будет открыт файл 6379.conf, в котором есть ряд параметров:
# /etc/redis/6379.conf port 6379 daemonize yes save 60 1 bind 127.0.0.1 tcp-keepalive 300 dbfilename dump.rdb dir ./ rdbcompression yes
Конфигурация Redis – самодокументированная с примером файла redis.conf, который находится в исходнике для большей простоты чтения. Если Redis используется в продакшене, то рекомендуется прочитать пример этого файла. Это позволит понять тонкости использования Redis.
Ряд инструкций, включая те, которые находятся в документации Redis, могут быть получены с помощью скрипта install_server.sh, который находится по адресу http://download.redis.io/redis-stable/utils/install_server.sh. Он вполне может быть выполнен, но необходимо учитывать ряд нюансов:
- Использовать этот скрипт возможно исключительно на операционных системах Mac OS X, Debian, Ubuntu.
- Он вносит более полный набор параметров в /etc/redis/6379.conf.
- Он записывает скрипт для инициализации System V в /etc/init.d/redis_6379, который предоставляет возможность запускать sudo service redis_6379 start.
В руководстве быстрого запуска Redis также содержится раздел, посвященный более аккуратной настройке этого хранилища ключей. Но приведенных ранее вариантов конфигурации вполне достаточно для новичков, которые только начинают свой путь.
Пару лет назад разработчик Redis заявил о том, что в ранних версиях есть ряд уязвимостей без настроенных некоторых конфигураций. Уже в версии 3.2 изменения по части безопасности были внесены, и защищенный режим используется автоматически.
Что подразумевается под защищенным режимом? Прежде всего, защита, которая будет имитировать поведение привязки к локальному хосту, если не задано иное.
С учетом всего описанного выше, мы можем начать разбираться в том, как непосредственно использовать Redis.
Начало работы
Сейчас мы опишем основные моменты, которые далее будем раскрывать в следующих частях этого руководства. Архитектура Redis – клиент-серверная. Он использует модель запрос-ответ. Простыми словами, автоматически подключение осуществляется посредством TCP-соединения либо порта 6379. Далее осуществляется запрос определенного действия (такого, как чтение, написание, получение, отправка или обновление), после чего на клиентское приложение поступает ответ от сервера.
Обычно, к одному и тому же серверу осуществляется сразу большое количество подключений. Особенно если приложение пользуется популярностью. Фактически как раз для этого и создан Redis, чтобы обрабатывать сразу несколько подключений с минимальными рисками по части безопасности. Каждый клиент читает в сокете, ожидая ответ сервера.
cli в redis-cli расшифровывается, как command line interface. А переводится это словосочетание, как «интерфейс командной строки». В свою очередь, server в redis-server (далее просто – сервер), означает сервер.
Простыми словами, когда вы используете Python в режиме командной строки, вы можете запускать redis-cli, чтобы попасть в REPL, и далее уже запускать клиентские приложения непосредственно из оболочки.
Сперва вам необходимо запустить сервер, чтобы появился сервер, с которым будет осуществляться взаимодействие.
Классический метод реализовать это на практике – запустить сервер на localhost (IPv4 адрес в этом случае будет 127.0.0.1), который сразу же будет установлен по умолчанию до того момента, пока не будет запрошено обратное. Также можно передать серверу имя файла конфигурации, которое будет похожим на указание всех пар ключей и значений в качестве аргументов командной строки.
$ redis-server /etc/redis/6379.conf 31829:C 07 Mar 2019 08:45:04.030 # oO0OoO0OoO0Oo Redis стартует oO0OoO0OoO0Oo 31829:C 07 Mar 2019 08:45:04.030 # Redis version=5.0.3, bits=64, commit=00000000, modified=0, pid=31829, стартовал 31829:C 07 Mar 2019 08:45:04.030 # Конфигурация загружена
Мы укажем опцию конфигурации daemonize в качестве yes, чтобы сервер мог работать в фоне. Иначе необходимо будет использовать –-daemonize yes в качестве опции для сервера.
Теперь вы можете включить REPL Redis. Для этого в командной строке необходимо ввести redis-cli. Затем вы увидите пару сервера host:port, за которой идет символ >, который служит разделителем ввода и вывода.
127.0.0.1:6379>
Приведем пример команды Redis, которая пингует сервер и возвращает PONG, если все прошло успешно.
127.0.0.1:6379> PING PONG
Внимание! Учтите, что команды Redis не чувствительны к регистру в отличие от аналогичных, которые будут использоваться в Python.
Также учтите, что проверять работоспособность не обязательно только описанной выше командой. Так, можно выполнить поиск идентификатора процесса сервера Redis, используя инструкцию pgrep.
$ pgrep redis-server 26983
Чтобы остановить работу сервера, необходимо использовать команду plill redis-server, запустив предварительно командную строку. В случае с операционными системами Mac также возможно использование redis-cli shutdown.
После этого мы попробуем использовать ряд команд Redis и сравнить их с тем, какой у них будет вид в чистом Python.
Выводы
Таким образом, установка Redis только кажется трудоемким процессом. На самом деле, достаточно выполнить ряд простых инструкций, которые подчиняются единой логике. Конечно, в Windows все несколько сложнее. Но проблема решается установкой форка, который приводится по ссылке в начале статьи.
Следующая часть материала ⇒ по ссылке