Настройка сервера кэширования данных redis на windows

Обновлено: 04.07.2024

Несмотря на то, что redis не является реляционной базой данных, он также должен обладать постоянством. Или, даже если он работает непосредственно в памяти, в случае простоя или других ошибок данные будут восстановлены, если вы захотите их использовать?

На самом деле, нет большой разницы между redis и redis между системами Windows и Linux (некоторые Linux используют команды для работы в окнах, потому что в то время это команды linux). Когда вы загрузите redis, вы увидите, что у redis есть две версии: windows и linux. Все внутренние операторы одинаковы, или это не серьезная ошибка? Разница заключается в процессе работы с файлом конфигурации redis и псевдонимом файла конфигурации. Конечная цель и результат реализации совпадают.

Первое отличие - это файл конфигурации. Я видел много файлов redis.conf в Интернете, которые используются для настройки сохраняемости, но не нашел их (возможно, моя версия - это версия для Windows, а это версия для Linux). В Windows это Настройте постоянство в файле конфигурации redis.windows.conf
Согласно указанному выше блогу

0. Отредактируйте redis.windows.conf (в папке, которую вы установили), чтобы установить запуск redis в фоновом режиме (демон) (Windows не поддерживает)

1. Проверка устойчивости RDB (снимка)

В Redis по умолчанию используется режим RDB. Поскольку модель RDB восстанавливает базу данных быстрее.

(1) Измените частоту сохранения RDB в файле конфигурации.



Три строки желтого красителя написаны с сохранением RDB.
Укажите, сколько операций обновления за период времени данные будут синхронизированы с файлом данных, может быть выполнено несколько условий

(2) Измените каталог создания файла rdb на каталог / var / redis (каталог var используется для хранения файлов, которые часто изменяются в системе)



Первый в основном готов, второй изменен вами,Специальное напоминание о том, что точка перед / var должна быть там

(3) Перезапустите службу Redis для тестирования:


Перезагрузка: (Сообщалось об ошибке из-за отсутствия каталога / var / redis)


Когда пользователь напишет эту команду, она появится


Неудачно, я перешел к папке redis, все прошло успешно, но все равно сообщается об ошибке. Это еще одна ошибка.

Поскольку только что измененный redis.windows.conf не добавлял каталог / var / redis, возникла проблема, которая также означает, что redis не создал его сам по себе, а должен вручную создать папку var и redis и переместите dump.rdb в var / redis /


Выключите сервер и перезапустите
закройте cmd.exe напрямую, и сервер будет закрыт
Клиент проверяет, есть ли данные (данные все еще сохраняются после перезапуска сервера)

2. Тест на устойчивость AOF

Сначала очистите базу данных

В файле конфигурации Redis есть три метода синхронизации:

(1) Включите постоянство AOF


Измените конфигурацию, чтобы включить AOF

(2) Измените метод синхронизации (по умолчанию запись выполняется один раз в секунду).


(3) Механизм перезаписи: (т. Е. Переставлять файл aof) перезаписывать каждые 100% увеличения после достижения 64M


(4) Проверить операцию сохранения AOF

1. Перезапустите службу redis и просмотрите каталог / var / redis (местоположение создания файла aof - это каталог с местоположением создания постоянного файла RDB выше)
Перезагрузите, все обязательно сделают
должен запускаться таким образом при запуске, не выполняйте напрямую redis-server, потому что в настоящее время файл aof еще не существует (потому что это первый раз)

Если вы видите вышеуказанное, вы должны знать, как его запустить. Затем перейдите в папку var / redis и посмотрите на нее. В это время создается файл appendonly.aof, хотя он пустой.
2. Клиент выполняет две операции Redis.

3. Откройте файл appendonly.aof для просмотра.

Объяснение: * 2 * 3 * 5 соответственно представляют количество строк, занятых этой командой.
* 2: при выборе 0 используется база данных Redis по умолчанию


5 lpush lkey1 aaa bbb ccc
То есть redis повторно выполнит сценарий в соответствии с приведенным выше файлом aof для восстановления данных.
Отключитесь, закройте Redis, затем откройте, чтобы просмотреть все ключи


Я столкнулся с проблемой: при повторном открытии redis-server redis.windows.conf не добавлялся.
Таким образом, в ключах * нет старых данных, что эквивалентно чтению записей истории в RDB или AOF при открытии redis-server, поэтому он пуст
(5) Проверить перезапись файла AOF (сжать файл AOF и обработать данные)

Проверьте размер файла appendonly.aof

(6) Клиент перезаписывает файл AOF: (Организуйте файл AOF, сохраните только результат AOF, результатом станет несколько приращений)


Содержимое: (операция объединена)

Следовательно, существует много частых операций с ключом в файле журнала AOF, которые увеличивают размер файла AOF, поэтому он часто используется с bgrewriteaof для уменьшения размера файла AOF и объединения операций с ключом в одну команду., Используйте bgrewriteaof для регулярного ежедневного обновления данных
нота:

Если вам нужно скопировать базу данных Redis с одного сервера на другой, вы можете скопировать файл aof и файл rdb и скопировать их в рабочий каталог redis на другом компьютере.Файл aof загружается по умолчанию.

Redis — достаточно популярный инструмент, который из коробки поддерживает большое количество различных типов данных и методов работы с ними. Во многих проектах он используется в качестве кэшируещего слоя, но его возможности намного шире. Мы в ManyChat очень любим Redis и активно используем его в нашем продукте для решения огромного количества задач. Про некоторые интересные кейсы использования этой in-memory key-value базы данных я расскажу на примерах. Надеюсь, вам они будут полезны, и вы сможете применить что-то в своих проектах.

Рассмотрим следующие кейсы:




Кэширование данных

Давайте начнем с самого простого, один из самых популярных кейсов использования Redis — кэширование данных. Будет полезно для тех, кто не работал с Redis. Для тех, кто уже давно пользуется этим инструментом — можно смело переходить к следующему кейсу. Для того, чтобы снизить нагрузку на БД, иметь возможность запрашивать часто используемые данные максимально быстро, используется кэш. Redis — это in-memory хранилище, то есть данные хранятся в оперативной памяти. Ещё это key-value хранилище, где доступ к данным по их ключу имеет сложность O(1) — поэтому данные мы получаем очень быстро.

Получение данных из хранилища выглядит следующим образом:


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


Таким образом, мы запишем данные в Redis и сможем их считать по тому же самому ключу в любой нужный нам момент. Но если мы будем все время писать в Redis, данные в нем будут занимать все больше и больше места в оперативной памяти. Нам нужно удалять нерелевантные данные, контролировать это вручную достаточно проблематично, поэтому пускай redis занимается этим самостоятельно. Добавим к нашему ключу TTL (время жизни ключа):


По истечении времени ttl (в секундах) данные по этому ключу будут автоматически удалены.

Как говорят, в программировании существует две самых сложных вещи: придумывание названий переменных и инвалидация кэша. Для того, чтобы принудительно удалить значение из Redis по ключу, достаточно выполнить следующую команду:


Также редис позволяет получить массив значений по списку ключей:


И соответственно массовое удаление данных по массиву ключей:

Очереди


Тем самым мы добавим в конец листа с названием $queueName некий $payload, который может представлять из себя JSON для инициализации нужной нам бизнес логики (например данные по денежной транзакции, данные для инициализации отправки письма пользователю, etc.). Если же в нашем хранилище не существует листа с именем $queueName, он будет автоматически создан, и туда попадет первый элемент $payload.

Со стороны консьюмера нам необходимо обеспечить получение задач из очереди, это реализуется простой командой чтения из листа. Для реализации FIFO очереди мы используем чтение с обратной записи стороны (в нашем случае мы писали через RPUSH), то есть читать будем через LPOP:


Для реализации LIFO очереди, нам нужно будет читать лист с той же стороны, с которой мы в него пишем, то есть через RPOP.



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


Мы рассмотрели базовую реализацию простых очередей, но Redis позволяет строить более сложные очереди. Например, мы хотим знать о времени последней активности наших пользователей на сайте. Нам не важно знать это с точностью вплоть до секунды, приемлемая погрешность — 3 минуты. Мы можем обновлять поле last_visit пользователя при каждом запросе на наш бэкенд от этого пользователя. Но если этих пользователей большое количество в онлайне — 10,000 или 100,000? А если у нас еще и SPA, которое отправляет много асинхронных запросов? Если на каждый такой запрос обновлять поле в бд, мы получим большое количество тупых запросов к нашей БД. Эту задачу можно решать разными способами, один из вариантов — это сделать некую отложенную очередь, в рамках которой мы будем схлопывать одинаковые задачи в одну в определенном промежутке времени. Здесь на помощь нам придет такая структура, как Sorted SET. Это взвешенное множество, каждый элемент которого имеет свой вес (score). А что если в качестве score мы будем использовать timestamp добавления элемента в этот sorted set? Тогда мы сможем организовать очередь, в которой можно будет откладывать некоторые события на определенное время. Для этого используем следующую функцию:


В такой схеме идентификатор пользователя, зашедшего на сайт, попадет в очередь $queueName и будет висеть там в течение 180 секунд. Все другие запросы в рамках этого времени будут также отправляться в эту очередь, но они не будут туда добавлены, так как идентификатор этого пользователя уже существует в этой очереди и продублирован он не будет (за это отвечает параметр 'NX'). Так мы отсекаем всю лишнюю нагрузку и каждый пользователь будет генерить не более одного запроса в 3 минуты на обновление поля last_visit.

Теперь возникает вопрос о том, как читать эту очередь. Если методы LPOP и RPOP для листа читают значение и удаляют его из листа атомарно (это значит, что одно и тоже значение не может быть взято несколькими консьюмерами), то sorted set такого метода из коробки не имеет. Мы можем сделать чтение и удаление элемента только двумя последовательными командами. Но мы можем выполнить эти команды атомарно, используя простой LUA скрипт!


В этом LUA скрипте мы пытаемся получить первое значение с весом в диапазоне от 0 до текущего timestamp в переменную val с помощью команды ZRANGEBYSCORE, если нам удалось получить это значение, то удаляем его из sorted set командой ZREM и возвращаем само значение val. Все эти операции выполняются атомарно. Таким образом мы можем вычитывать нашу очередь в консьюмере, аналогично с примером очереди построенной на структуре LIST.

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

Блокировки (Mutex)

Mutex (блокировка) — это механизм синхронизации доступа к shared ресурсу нескольких процессов, тем самым гарантируя, что только один процесс будет взаимодействовать с этим ресурсом в единицу времени. Этот механизм часто применяется в биллинге и других системах, где важно соблюдать потоковую безопасность (thread safety).

Для реализации mutex на базе Redis прекрасно подойдет стандартный метод SET с дополнительными параметрами:


где параметрами для установки mutex являются:

  • $key — ключ идентифицирующий mutex;
  • $hash — генерируем некую подпись, которая идентифицирует того, кто поставил mutex. Мы же не хотим, чтобы кто-то в другом месте случайно снял блокировку и вся наша логика рассыпалась.
  • $ttl — время в секундах, которое мы отводим на блокировку (на тот случай, если что-то пойдет не так, например процесс, поставивший блокировку, по какой-то причине умер и не снял ее, чтобы это блокировка не висела бесконечно).

Чаще всего, когда мы пишем код, который пытается работать с shared ресурсом, который заблокирован, мы хотим дождаться его разблокировки и продолжить работу с этим ресурсом. Для этого можем реализовать простой метод для ожидания освободившегося ресурса:


Мы разобрались как ставить блокировку, теперь нам нужно научиться ее снимать. Для того, чтобы гарантировать снятие блокировки тем процессом, который ее установил, нам понадобится перед удалением значения из хранилища Redis, сверить хранимый хэш по этому ключу. Для того, чтобы сделать это атомарно, воспользуемся LUA скриптом:


Здесь мы пытаемся найти с помощью команды GET значение по ключу $key, если оно равно значению $hash, то удаляем его при помощи команды DEL, которая вернет нам количество удаленных ключей, если же значения по ключу $key не существует, или оно не равно значению $hash, то мы возвращаем 0, что значит блокировку снять не удалось. Базовый пример использования mutex:

Rate limiter

Достаточно частая задача, когда мы хотим ограничить количество запросов к нашему апи. Например на один API endpoint от одного аккаунта мы хотим принимать не более 100 запросов в минуту. Эта задача легко решается с помощью нашего любимого Redis:


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

Pub/sub

Как сделать сайт в 25 раз быстрее с помощью нескольких строк кода

Естественный трафик — отличный способ привлечь внимание к сайту, а Google — самая популярная поисковая система, которую можно использовать для его получения.

Хотя Google ранжирует сайты на основе множества показателей, скорость загрузки — один из важнейших факторов при расчете авторитетности веб-страницы.

Быстрая загрузка сайта важна не только для рейтинга, но и для общего удобства пользователей.

Большинство из нас, разработчиков (особенно независимых), используют JavaScript-фреймворки, такие как React и Angular, которые, возможно, выполняют клиентскую обработку данных. Поэтому скорость, с которой извлекаются данные, является важным аспектом процесса разработки.

Простой способ ускорить загрузку сайта — использовать кэширование и CDN (Content Delivery Network, сеть доставки контента). Комбинация этих двух опций может существенно сократить время, необходимое для загрузки первого байта.

В этой статье мы рассмотрим кэширование на примере Redis, а также узнаем, что такое CDN.

Кэширование, говоря простым языком, — это хранение в памяти данных, которые, по вашему мнению, могут часто использоваться (так называемый кэш).

Всякий раз, когда вам понадобятся эти данные, вы проверяете, хранятся ли они в памяти. Если нет, то запрашиваете базу данных, чтобы извлечь их и сохранить в кэше для дальнейшего использования.

Как видно на изображении выше, кэш — прослойка структуры часто используемых данных между источником данных и приложением.

Не все данные нужно кэшировать. Например, личные настройки пользователя не должны кэшироваться на сервере. Однако вы всегда можете сохранить их в локальном хранилище клиента для более быстрого доступа.

Кэширование данных — один из самых простых способов сократить время загрузки. И к нему нужно подходить с умом.

Что следует кэшировать?

Как указывалось ранее, часто используемые данные должны быть кэшированы, чтобы сайт был отзывчивым и быстро работал.

Разработчики применяют различные стратегии кэширования в зависимости от предпочтений и потребностей. Ниже приведены примеры элементов, которые следует кэшировать:

  1. Токены авторизации и сеанса.
  2. Данные посадочной страницы, которые не часто меняются (например, последние проекты на сайте для портфолио).
  3. Черновики блогов и постов, которые могут временно храниться в кэше, а затем отправляться в базу данных.
  4. Потоки комментариев и аналитика в реальном времени.

Почему Redis?

Конечно, вы можете использовать любую другую систему управления базами данных. Но мы рекомендуем хотя бы ознакомиться с Redis.

Redis — это хранилище структур данных в памяти с открытым исходным кодом. Оно содержит привычные для всех типы данных, в том числе:

Это хранилище данных типа “ключ-значение” с расширенными возможностями, например установка даты истечения срока хранения.

Redis — самая популярная база данных согласно опросу на Stack Overflow за 2021 год.

MemoryDB для Redis от AWS — отличный выбор, если вам нужен надежный транзакционный журнал, хранящий данные в нескольких зонах доступности.

Установка

Установить Redis очень просто, если вы работаете на Linux.

Перейдите на страницу загрузки Redis и загрузите последнюю доступную версию или просто выполните следующую команду в терминале:

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

Для Windows есть два варианта:

  • Следовать руководству по установке старой версии Redis.
  • Использовать подсистему Windows для Linux (WSL) и получить последнюю версию Redis.

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

Использование

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

Сначала мы создадим простой сервер Node.js, который получает данные из интернета и отправляет их клиентам, а позже добавим кэширование и увидим огромную разницу.

Ниже представлен сервер, который получает данные из источника данных и передает их клиенту.

Вы можете увидеть время отклика на изображении ниже:

Затраченное время составляет 1301 мс

Теперь реализуем кэширование с помощью Redis.

Прежде всего, нужен пакет npm.

После установки импортируем его в файл server.js и создаем клиента.

Теперь отредактируем функцию app.get() и добавим в нее логику кэширования.

Это простая логика if-else . Сначала проверим, есть ли данные на сервере Redis: вызываем клиента Redis и используем .get() , чтобы получить данные.

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

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

Используем метод JSON.stringify() , чтобы преобразовать данные JSON в строковый тип данных.

Когда данные будут храниться в хранилище Redis, при следующем вызове функции app.get(‘/’) клиент сможет получить их с сервера Redis, а не из исходного источника.

Благодаря этому, можно сразу же увидеть потрясающие результаты: затраченное время составляет всего 52 мс (по сравнению с 1301 мс ранее).

Это был довольно упрощенный взгляд на кэширование, а Redis находит гораздо больше применений, чем кэширование (в частности, используется в качестве постоянного хранилища).

Окончательный файл server.js будет выглядеть так:

Сеть доставки контента (CDN)

Кэширование данных на сервере, безусловно, является существенным фактором оптимизации и продвижения сайта. А как насчет кэширования больших файлов HTML, видео и изображений?

CDN предоставляет простое решение этой проблемы. Важно понимать, что CDN и кэширование — это не одно и то же.

Хотя CDN кэширует контент, не все, что кэширует данные, можно назвать CDN.

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

Популярные сайты, такие как Netflix и Facebook, пользуются преимуществами CDN. Они быстро доставляют по ближайшей к пользователю группе серверов.

CDN хранит кэшированную копию контента в нескольких местах по всему миру.

Поэтому, если кто-то из Австралии хочет посетить сайт, размещенный в Великобритании, то, вместо этого, он посетит ближайший CDN-сервер, доступный в его стране, получив кэшированную копию сайта, размещенного в Великобритании.

Это экономит затраты на пропускную способность, повышая надежность и время безотказной работы.

На некоторых платформах и хостах CDN по умолчанию находится в вашем распоряжении. Обычно его использование сводится к добавлению заголовка в HTML-файл.

На личном опыте я убедился в том, что CDN от Vercel — самый простой в использовании инструмент. У него есть подробное руководство и полезная функция, которая предотвращает устаревание данных.

В Vercel просто нужно добавить заголовок, чтобы сообщить CDN, что сайт нуждается в кэшировании. Пример заголовка приведен ниже:

Стоит отметить, что любые данные, которые загружаются на стороне клиента, не будут включены в кэшированную CDN-копию сайта. Это связано с тем, что данные динамически загружаются на стороне клиента и не отображаются на сервере.

Однако вы всегда можете кэшировать данные, загружаемые на стороне клиента, с помощью Redis, CDN или любой другой доступной опции, чтобы ускорить динамическую загрузку.

Заключительные мысли

Оптимизация и сокращение времени, затрачиваемого на загрузку сайта, является важнейшим этапом всего процесса веб-разработки.

Из данных Google следует:

Если время загрузки страницы увеличивается с одной секунды до 10 секунд, вероятность того, что посетитель мобильной версии уйдет, возрастает на 123%.

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

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

Сочетание CDN со стратегией кэширования данных может привести к поразительному снижению времени загрузки сайта, тем самым увеличив ваши шансы занять более высокое место в рейтинге Google.

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

Содержание

1. Введение

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

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

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

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

2. Лицензия

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

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

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

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

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

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

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

  • Windows 32 bit: bin/release/redisbin.zip
  • Windows 64 бит: bin/release/redisbin64.zip

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

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

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

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

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

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

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

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

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

Если вы хотите запустить 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, когда имя хоста и порт предоставляются в качестве аргументов командной строки:

Предполагая, что наш сервер 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.

Читайте также: