Статьи

Установка Redis

Эта статья является частью нашего курса Academy под названием Redis — хранилище ключей NoSQL .

Это ускоренный курс по Redis. Вы узнаете, как установить Redis и запустить сервер. Кроме того, вы будете возиться с командной строкой Redis. Далее следуют более сложные темы, такие как репликация, сегментирование и кластеризация, а также объясняется интеграция Redis с Spring Data. Проверьте это здесь !

1. Введение

Redis, пожалуй, самый широко известный и, возможно, лучший пример среди огромного количества решений NoSQL, появившихся в сообществе в последние годы. Хотя представление о Redis как о хранилище ключей / значений является верным предположением, Redis делает гораздо больше, предоставляя разработчикам мощь сложных структур данных. Цитировать http://redis.io :

«Redis — это открытый исходный код, лицензированный BSD, продвигающий хранилище значений ключей. Его часто называют сервером структуры данных, поскольку ключи могут содержать строки, хэши, списки, наборы и отсортированные наборы ».

Не говоря уже о встроенной поддержке публикации / подписки, кластеризации (экспериментальной), шардинга, репликации и семантики транзакций. Цель данного руководства — предоставить краткое, но в то же время исчерпывающее руководство по миру Redis, пройдя через его установку, настройку и функции.

Хороший способ думать о Redis — это хранилище данных в памяти. Если ваши данные помещаются в память, вы получите от них максимум, и поэтому Redis довольно часто используется в качестве расширенного решения для кэширования (вместо Memcached). Но как только ваши данные перестают помещаться в памяти, вы увидите значительное снижение производительности, вызванное переключением на диск. Позже в уроке мы вернемся к этой теме и посмотрим, какие еще есть варианты.

Последняя версия Redis на момент написания этой статьи — 2.8.4 и именно эту версию мы будем использовать на протяжении всего урока.

2. Лицензия

Redis — это программное обеспечение с открытым исходным кодом, выпущенное на условиях лицензии BSD из трех пунктов. Подробнее на официальном сайте Redis .

3. Документация

Команда Redis поддерживает полную, очень хорошо организованную и актуальную документацию по каждой отдельной функции или команде, которые вам могут понадобиться. Это отличный справочник для всех, в любое время, поэтому не стесняйтесь смотреть на него, если у вас есть какие-либо вопросы или что-то не совсем понятно. Общая документация доступна по адресу http://redis.io/documentation, в то время как у команд есть собственный раздел по адресу http://redis.io/commands (мы будем часто ссылаться на него, как только начнем играть с Redis).

4. Установка Redis в Linux

Лучший (и на данный момент единственный) способ установить Redis на вашу Linux-систему — это собрать ее из исходного кода. Для этого можно загрузить исходные коды Redis с http://redis.io/download (не забудьте выбрать ветку стабильного выпуска). Как только архив окажется на вашем компьютере, пара простых и простых шагов отделяет вас от наличия собственного экземпляра Redis, готового к использованию:

  1. Скачать
    1
    wget http://download.redis.io/releases/redis-2.8.4.tar.gz
  2. Распакуйте архив
    1
    2
    tar xfz redis-2.8.4.tar.gz
    cd redis-2.8.4
  3. Сделать двоичные файлы
    1
    make

    или (если у вас установлен Linux 32bit)

    1
    make 32bit
  4. Запустите тесты (для запуска тестов необходимо Tcl 8.5+ )
    1
    make test
  5. Установить (от имени пользователя root или с помощью команды sudo )
    1
    make install

Стоит отметить, что Redis не имеет каких-либо особых требований или зависимостей, ни во время выполнения, ни во время компиляции, и совместим с большинством дистрибутивов Linux. Единственные предустановленные пакеты, которые вам нужны — это gcc и make.

По умолчанию псевдонимы для двоичных файлов Redis будут создаваться в папке /usr/local/bin . Для получения дополнительной информации файл README является отличным местом для поиска дополнительных сведений (таких как изменение папки установки по умолчанию, устранение распространенных ошибок при сборке и т. Д.).

5. Установка Redis в Windows

Команда Redis не поддерживает официальные дистрибутивы Windows. К счастью, существует экспериментальный порт Windows 32/64, поддерживаемый группой Microsoft Open Tech и свободно доступный на GitHub: https://github.com/MSOpenTech/redis . Одна важная вещь, которую следует принять во внимание, это то, что порт Windows всегда стоит за последними выпусками Redis и, как таковой, не так богат, как вам может понадобиться. На момент написания последней версии Redis для Windows была 2.6.12 .

  1. Клонируйте репозиторий (или загрузите его в виде ZIP архива с https://github.com/MSOpenTech/redis, если у вас не установлен Git )
    1
    git clone https://github.com/MSOpenTech/redis
  2. Для вашего удобства в репозитории уже есть готовые двоичные файлы. Просто распакуйте их в удобном месте.
    • Windows 32 bit: bin/release/redisbin.zip
    • Windows 64 бит: bin/release/redisbin64.zip
  3. Однако, если вы хотите, вы можете также собрать Redis из исходников. Для этого на веб-сайте Microsoft Visual Studio должна быть доступна Microsoft Visual Studio 2010 или ее бесплатная доступная версия Microsoft Visual C ++ 2010 Express Edition . Если у вас есть это, просто откройте файл решения из msvs/RedisServer.sln и msvs/RedisServer.sln его. msvs/Debug файлы будут доступны в msvs/Debug или msvs/Release , в зависимости от конфигурации сборки и платформы (32-битная / 64-битная).

6. Проверка правильности установки

После завершения установки на вашем Linux-компьютере должны быть следующие исполняемые файлы, расположенные в папке /usr/local/bin/ :

Имя исполняемого файла Описание
Redis-тест Инструмент тестирования Redis, очень полезный для симуляции запуска набора команд многими клиентами параллельно, чтобы оценить вашу конфигурацию экземпляра Redis (более подробно на http://redis.io/topics/benchmarks )
redis-check-aof * Проверяет и исправляет, если поврежден журнал только для добавления (журнал AOF), используемый Redis для управления сохранением (подробнее на http://redis.io/topics/persistence )
redis-check-dump * Проверяет файл дампа базы данных Redis (RDB) (подробнее на http://redis.io/topics/quickstart )
Redis-кли Утилита интерфейса командной строки для связи с сервером Redis (более подробную информацию можно найти по адресу http://redis.io/topics/quickstart и в разделе « Первый взгляд на CLI Redis »).
Redis-сервер Сервер Redis (подробнее на http://redis.io/topics/quickstart )

Таблица 1

* Эти инструменты очень полезны, если вам нужно восстановить поврежденные данные

Установка Windows (созданная с нуля или извлеченная из предварительно созданного архива) состоит из следующих исполняемых файлов, отражающих Linux:

  • Redis-benchmark.exe
  • Redis-регистрация aof.exe
  • Redis-регистрация dump.exe
  • Redis-cli.exe
  • Redis-server.exe

Это сэкономит вам много времени, если папка, содержащая эти исполняемые файлы, будет добавлена ​​в PATH среды Windows PATH .

7. Базовая конфигурация

Redis поддерживает довольно сложные параметры конфигурации, включая постоянство, сегментирование, кластеризацию, репликацию… Некоторые параметры конфигурации требуют перезапуска сервера, но некоторые могут быть изменены во время выполнения с redis-cli инструмента redis-cli .

Но хорошая вещь (для начинающих) в конфигурации Redis заключается в том, что конфигурации вообще нет! Redis может быть запущен без единой настройки и будет работать отлично.

Тем не менее, было бы очень полезно взглянуть на некоторые ключевые параметры (подробные настройки будут рассмотрены по мере продвижения по более сложным темам). В качестве примера мы рассмотрим файл redis.conf из дистрибутива Redis, хорошую отправную точку для создания собственного.

  • daemonize yes | no daemonize yes | no (по умолчанию: нет )
    По умолчанию Redis не запускается как демон. Используйте «да», если вам это нужно. Обратите внимание, что Redis напишет файл pid в pidfile когда будет демонизирован.
  • pidfile /var/run/redis.pid (по умолчанию: /var/run/redis.pid )
    При запуске daemonized по умолчанию Redis записывает файл pid в /var/run/redis.pid. Вы можете указать свое местоположение файла pid здесь.
  • port 6379 (по умолчанию: 6379 )
    Принимать соединения на указанном порту, по умолчанию 6379. Если указан порт 0, Redis не будет прослушивать сокет TCP.
  • bind 192.168.1.100 10.0.0.1 (по умолчанию: закомментировано, все сетевые интерфейсы )
    По умолчанию Redis прослушивает соединения со всех сетевых интерфейсов, доступных на сервере. Можно прослушивать только один или несколько интерфейсов, используя директиву конфигурации «bind», за которой следует один или несколько IP-адресов.
  • logfile /var/log/redis.log (по умолчанию: «» )
    Укажите имя файла журнала. Также пустая строка может быть использована для форсирования. Redis для входа на стандартный вывод. Обратите внимание, что если вы используете стандартный вывод для ведения журнала, но daemonize, журналы будут отправлены в / dev / null
  • databases 16 (по умолчанию: 16 )
    Установите количество баз данных. База данных по умолчанию — DB 0, вы можете выбрать другую для каждого соединения, используя SELECT <dbid>, где dbid — это число от 0 до «database»-1.
  • timeout 0 (по умолчанию: 0 )
    Закройте соединение после того, как клиент простаивает в течение N секунд (0 для отключения)
  • dbfilename dump.rdb (по умолчанию: dump.rdb )
    Имя файла, куда выгрузить БД
  • dir /var/redis (по умолчанию: ./ )
    Рабочий каталог. БД будет записана в этом каталоге с указанным выше именем файла с использованием директивы конфигурации dbfilename. Файл «Только добавление» также будет создан внутри этого каталога.

По большому счету, это самые полезные параметры конфигурации, с которых нужно постоянно начинать настройку сервера Redis.

8. Запуск / остановка сервера

Есть несколько способов запустить сервер Redis. Это самый простой способ — запустить redis-server (или redis-server.exe в Windows) без указания какой-либо конфигурации. После запуска полнофункциональный сервер Redis готов к обработке запросов, прослушивая порт по умолчанию 6379 .

На рисунке ниже показан типичный вывод на консоли Linux, когда сервер Redis запускается успешно. Первая строка предупреждает об отсутствии файла конфигурации, поэтому конфигурация по умолчанию является местом разговора. И это еще один способ, которым Redis сияет: простота как можно проще делает его действительно простым для начала, добавляя более продвинутые опции конфигурации (когда вам это действительно нужно).

Рисунок 1. Типичный вывод консоли при запуске Redis с конфигурацией по умолчанию

Рисунок 1. Типичный вывод консоли при запуске Redis с конфигурацией по умолчанию

Небольшое изменение предыдущего потока включает передачу файла конфигурации и желаемого порта для прослушивания входящих соединений:

1
redis-server <conf> --port <port>

или в Windows

1
redis-server.exe <conf> --port <port>

Параметр порта, если он указан, переопределяет параметр из файла конфигурации. На рисунке ниже показано, как может выглядеть вывод Redis в этом случае.

Рисунок 2. Типичный вывод на консоль, когда Redis запускает файл конфигурации и порт, указанный в качестве аргументов командной строки

Рисунок 2. Типичный вывод на консоль, когда Redis запускает файл конфигурации и порт, указанный в качестве аргументов командной строки

Сервер Redis, запущенный любым из этих способов, можно остановить, нажав Ctrl+C

Опытные пользователи Linux знакомы со сценариями инициализации, и использование сервера Redis, запускаемого автоматически после загрузки системы, весьма полезно. Для этого в дистрибутив Redis входит шаблон сценария запуска по адресу utils/redis_init_script . Этот сценарий может использоваться как есть и должен быть скопирован в стандартную папку /etc/init.d . Обратите внимание, что по умолчанию сценарий запуска попытается найти файл конфигурации по адресу /etc/redis/6379.conf (для получения более подробной информации об этих рекомендациях и соглашениях, пожалуйста, просмотрите http://redis.io/topics/quickstart ).

Если вы хотите запустить Redis таким способом (используя сценарии инициализации), файл /etc/redis/6379.conf следует немного изменить, чтобы установить пару важных параметров конфигурации:

  • daemonize должно быть установлено значение yes (по умолчанию установлено значение no )
  • pidfile должен быть установлен в /var/run/redis_6379.pid (что соответствует номеру порта экземпляра Redis и соглашению об имени файла конфигурации)
  • logfile должен быть установлен в /var/log/redis_6379.log (следуя тем же соглашениям, что и pidfile )
  • dir должен быть установлен в / var / redis / 6379 (следуя тем же соглашениям, что и pidfile и pidfile )

Пожалуйста, обратитесь к разделу Базовая конфигурация , чтобы получить более подробное объяснение, что означают эти параметры конфигурации и их значение.

9. Сначала посмотрите на Redis CLI

Лучший и самый простой способ изучить Redis на полную мощность — это интерфейс командной строки redis-cli redis-cli.exe ( redis-cli.exe в Windows). Он очень прост в использовании, плюс имеет краткую справку для каждой команды Redis и поддерживает навигацию по истории команд (с помощью стрелок Up и Down ).

Когда redis-cli , он сразу же пытается подключиться к экземпляру Redis, предполагая, что он работает на локальном компьютере ( 127.0.0.1 ) и по умолчанию ( 6379 ). Если это не так, инструмент говорит вам об этом.

Рисунок 3. Redis-cli запускается и пытается подключиться к локальному экземпляру Redis

Рисунок 3. redis-cli запускается и пытается подключиться к локальному экземпляру Redis

Кроме того, redis-cli может использоваться для подключения к удаленным экземплярам Redis, когда имя хоста и порт предоставляются в качестве аргументов командной строки:

1
redis-cli -h <hostname> -p <port>

Предполагая, что наш сервер Redis работает на локальном компьютере, давайте запустим redis-cli и redis-cli нашу первую команду, чтобы убедиться, что сервер готов обслуживать запросы.

Рисунок 4. Redis-cli запускается и подключается к локальному экземпляру Redis

Рисунок 4. redis-cli запускается и подключается к локальному экземпляру Redis

Команда PING — это самый простой и свободный от побочных эффектов способ заставить сервер Redis отправлять PONG в ответ, подтверждая, что он работает и готов. Чтобы получить немного больше информации о том, для чего PING команда PING , HELP PING показывает краткий обзор этого.

Рисунок 5. Выдача команды PING из redis-cli и подтверждение того, что сервер отвечает PONG

Рисунок 5. Выдача команды PING из redis-cli и подтверждение того, что сервер отвечает PONG

Несмотря на свою простоту, redis-cli чрезвычайно полезен. Это позволяет не только отправлять команды на сервер Redis, но и изменять конфигурацию, отслеживать текущую активность и многое, многое другое.

10. Что дальше

В следующем разделе мы будем проводить гораздо больше времени с Redis CLI, пробуя различные команды и охватывая все структуры данных Redis.