Эта статья является частью нашего курса 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
wget http:
//download
.redis.io
/releases/redis-2
.8.4.
tar
.gz
- Распакуйте архив
12
tar
xfz redis-2.8.4.
tar
.gz
cd
redis-2.8.4
- Сделать двоичные файлы
1
make
или (если у вас установлен Linux 32bit)
1make
32bit
- Запустите тесты (для запуска тестов необходимо
Tcl 8.5+
)1make
test
- Установить (от имени пользователя
root
или с помощью командыsudo
)1make
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
.
- Клонируйте репозиторий (или загрузите его в виде
ZIP
архива с https://github.com/MSOpenTech/redis, если у вас не установленGit
)1git clone https:
//github
.com
/MSOpenTech/redis
- Для вашего удобства в репозитории уже есть готовые двоичные файлы. Просто распакуйте их в удобном месте.
- Windows 32 bit:
bin/release/redisbin.zip
- Windows 64 бит:
bin/release/redisbin64.zip
- Windows 32 bit:
- Однако, если вы хотите, вы можете также собрать 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/
:
* Эти инструменты очень полезны, если вам нужно восстановить поврежденные данные
Установка 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-server <conf> --port <port> |
или в Windows
1
|
redis-server.exe <conf> --port <port> |
Параметр порта, если он указан, переопределяет параметр из файла конфигурации. На рисунке ниже показано, как может выглядеть вывод 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
). Если это не так, инструмент говорит вам об этом.
Кроме того, redis-cli
может использоваться для подключения к удаленным экземплярам Redis, когда имя хоста и порт предоставляются в качестве аргументов командной строки:
1
|
redis-cli -h < hostname > -p <port> |
Предполагая, что наш сервер Redis работает на локальном компьютере, давайте запустим redis-cli
и redis-cli
нашу первую команду, чтобы убедиться, что сервер готов обслуживать запросы.
Команда PING
— это самый простой и свободный от побочных эффектов способ заставить сервер Redis отправлять PONG
в ответ, подтверждая, что он работает и готов. Чтобы получить немного больше информации о том, для чего PING
команда PING
, HELP PING
показывает краткий обзор этого.
Несмотря на свою простоту, redis-cli
чрезвычайно полезен. Это позволяет не только отправлять команды на сервер Redis, но и изменять конфигурацию, отслеживать текущую активность и многое, многое другое.
10. Что дальше
В следующем разделе мы будем проводить гораздо больше времени с Redis CLI, пробуя различные команды и охватывая все структуры данных Redis.