Redis — это распространенное хранилище данных в памяти, обеспечивающее высокую производительность и низкую задержку для приложений. Расширенные структуры данных и программируемость делают его лучшим выбором для кэширования, аналитики в реальном времени и других вариантов использования, требующих быстрой и эффективной обработки данных.
В следующей статье мы делимся подробным руководством по эффективному мониторингу Redis. Мы начнем с ознакомления с Redis и некоторыми его альтернативами, после чего поделимся списком важных показателей производительности и обсудим, как их отслеживать с помощью различных команд и инструментов.
Redis — это хранилище структур данных с открытым исходным кодом в памяти, которое также обеспечивает дополнительную сохраняемость. Поскольку Redis хранит данные в памяти, оно по своей сути быстрее традиционных дисковых баз данных. Кроме того, возможности Redis по репликации и кластеризации позволяют разработчикам создавать распределенные системы, способные обрабатывать высокий трафик и большие объемы данных.
Хранилище называется “структурой данных”, потому что оно изначально поддерживает несколько структур данных, включая строки, наборы, списки, хэши, растровые изображения, геопространственные индексы и отсортированные наборы. Это позволяет разработчикам хранить и обрабатывать широкий спектр типов данных в Redis.
Например, разработчики могут использовать отсортированные наборы для работы с данными, требующими сортировки или ранжирования, такими как таблицы лидеров или ограничители скорости. Они могут использовать тот же экземпляр Redis для хранения координат местоположения, используя тип геопространственных данных.
Как и традиционные системы баз данных, Redis поддерживает транзакции, которые позволяют пользователям выполнять несколько команд за один шаг. Разработчики также могут выполнять сценарии на стороне сервера, используя Lua, или писать хранимые процедуры, используя Redis Functions API.
Redis часто развертывается как распределенный кэш приложений, но также может использоваться как автономная база данных. Другой распространенный вариант использования Redis — как система обмена сообщениями для приложений реального времени. Его реализация публикации/подписки содержит множество полезных функций, таких как подписки на соответствие шаблону и сегментирование. Тип данных Redis stream можно использовать для масштабирования потоковой передачи данных и обмена сообщениями.
При поиске хранилища данных в памяти вы можете обнаружить, что сравниваете Redis с альтернативами, такими как Memcached, Aerospike, Elasticsearch и MongoDB. Каждое хранилище данных обладает своими уникальными функциями, которые делают их хорошо подходящими для различных вариантов использования.
Redis и Memcached — это хранилища ключей-значений, оптимизированные для кэширования. С точки зрения скорости чтения/записи и использования памяти, оба предлагают одинаковую производительность. Однако Redis поставляется с настраиваемой сохраняемостью, в то время как Memcached этого не делает.
Redis также поддерживает более широкий спектр структур данных, что делает его более гибким, чем Memcached, и предлагает больше функций, таких как постоянство, транзакции и атомарность, конвейерная обработка, pub-sub, сценарии Lua и кластеризация.
Aerospike — это база данных NoSQL в оперативной памяти, оптимизированная для больших объемов данных. Как и Redis, он предлагает богатый набор функций, включая создание сценариев на стороне сервера, гибкое масштабирование, дополнительную сохраняемость и поддержку нескольких облаков. Обе технологии обеспечивают схожие уровни производительности, доступности, атомарности и отказоустойчивости.
Хотя Redis поддерживает более широкий спектр структур данных, чем Aerospike, последний обеспечивает большую гибкость в отношении репликации и контроля доступа. Кроме того, поддержка клиентской библиотеки Aerospike ограничена по сравнению с Redis.
Elasticsearch — это полнотекстовая поисковая система, оптимизированная для быстрых и эффективных поисковых запросов. В то время как Redis, Aerospike и Memcached в основном используются для кэширования, Elasticsearch предназначен для поиска и анализа данных.
Расширенные возможности поиска Elasticsearch и поддержка структурированных и неструктурированных данных делают его идеальным выбором для таких случаев использования, как аналитика, нечеткий поиск и обработка документов. С учетом сказанного, при желании вы также можете использовать Elasticsearch в качестве кэша для вашего основного хранилища. Просто помните, что, поскольку по умолчанию он не оптимизирован для кэширования, вам придется вручную настроить кластер для лучшей индексации и параллелизма.
Хотя MongoDB в первую очередь является традиционной дисковой базой данных, она также предлагает встроенный в память механизм для более быстрых операций чтения и записи. Этот встроенный в память механизм оптимизирован для запроса больших объемов данных в режиме реального времени.
И MongoDB, и Redis обеспечивают высокоуровневый параллелизм, транзакции и гибкую архитектуру развертывания. Однако, по сравнению с Redis, поддержка структур данных и расширенных функций кэширования в MongoDB ограничена.
Короче говоря, при сравнении Redis, Aerospike, Memcached, Elasticsearch и MongoDB нет однозначного победителя. Тот, который вы в конечном итоге выберете, будет зависеть от ваших индивидуальных бизнес-потребностей и предпочтений разработчика.
Redis предоставляет несколько показателей, связанных с его состоянием, производительностью, доступностью и репликацией. Администраторы могут использовать эти показатели для мониторинга работоспособности, прогнозирования сбоев, устранения узких мест и определения путей улучшения.
Мониторинг показателей, относящихся к отдельным узлам и кластеру в целом, важен для обеспечения ожидаемой работы Redis. Вы можете использовать конечную точку GET/v1/nodes/stats Redis REST API для получения следующей статистики узла в режиме реального времени:
Чтобы получить ту же статистику (что и выше) на уровне кластера, все, что вам нужно сделать, это изменить конечную точку, чтобы GET /v1/cluster/stats.
Показатели базы данных дают четкое представление о том, насколько хорошо экземпляр Redis обрабатывает данные. Конечная точка GET /v1/bdbs/stats Redis API возвращает в своем ответе следующую ключевую статистику:
Чтобы просмотреть показатели, относящиеся к сегментированию, вы можете использовать конечную точку GET/v1/shards/stats. Некоторые из возвращаемых ею показателей следующие:
Команда Redis INFO выводит следующий список статистических данных, связанных с памятью, которые могут сыграть ключевую роль в обнаружении проблем и оптимизации пропускной способности.
Выходные данные команды Redis INFO содержат несколько показателей, связанных с репликацией. Некоторые из наиболее важных показателей::
Если экземпляр является репликой, возвращаются некоторые дополнительные поля, в том числе:
Группа команд с задержкой может использоваться для выполнения мониторинга задержки кластера Redis. Команда LATENCY LATEST выводит самое последнее зарегистрированное событие задержки. Выходные данные включают название события, временную метку, в которую произошел последний всплеск, последнюю задержку (в миллисекундах) и самую высокую задержку за все время для события.
Команда «LATENCY HISTORY» отображает временные ряды задержек для события. Это удобно, когда вы хотите проанализировать исторические тенденции задержки события. Если вы хотите сбросить временные ряды для события, вы можете использовать команду LATENCY RESET.
Если вы хотите визуализировать тенденции события с задержкой, используйте команду LATENCY GRAPH. Она возвращает график в формате ASCII. Наконец, если вам нужен подробный, понятный человеку анализ проблем с задержкой и потенциальных решений, вы можете выполнить команду LATENCY DOCTOR.
Консоль администратора Redis — это веб-приложение, которое показывает показатели, связанные с кластером, узлами, базами данных, сегментами, репликацией и памятью. Для входа в консоль администратора необходимо получить учетные данные для входа, хранящиеся в секретном файле Kubernetes, и перенаправить локальный порт на порт службы пользовательского интерфейса (порт по умолчанию 8443).
Консоль администратора — отличное место для получения целостного обзора экземпляра Redis. В ней отображается информация, относящаяся к подключениям, загрузке процессора, входящему и исходящему трафику, дисковому пространству, оперативной памяти, задержке, ограничению памяти и многому другому. В нем также показаны несколько показателей для конкретной базы данных, таких как количество удаляемых объектов в секунду, коэффициент попадания, задержка команд, фрагментация оперативной памяти и общее количество ключей.
Команда MONITOR в Redis обеспечивает непрерывный поток всех команд, которые выполняются сервером Redis. Он может выступать в качестве мощного инструмента отладки, позволяя пользователям наблюдать и понимать, что происходит с действующим сервером Redis.
Например, если вы отлаживаете приложение, вы можете ввести MONITOR, чтобы увидеть, какие команды приложение выполняет на Redis. Или, если вы сталкиваетесь с исключительно высокой частотой запросов, вы можете использовать команду MONITOR, чтобы увидеть характер входящих запросов.
Вы можете выполнить команду MONITOR через Redis CLI или telnet. Используйте Ctrl + C, чтобы остановить поток MONITOR, запущенный через CLI. Чтобы закрыть поток telnet, необходимо ввести команды RESET или QUIT. MONITOR не регистрирует административные команды и редактирует конфиденциальные данные. Важно отметить, что непрерывная потоковая передача MONITOR в производственном экземпляре может повлиять на производительность.
Redis — популярное хранилище данных в оперативной памяти, которое отличается производительностью, устойчивостью, масштабируемостью и долговечностью. Простой в использовании интерфейс запросов, поддержка нескольких структур данных, встроенные функции репликации и кластеризации, а также сохраняемость данных делают его основным элементом нескольких распределенных ИТ-инфраструктур. Независимо от того, создаете ли вы для облака или локально, вы можете использовать Redis для кэширования, управления сеансами или потоковой передачи данных в реальном времени.