Введение
Redis – это свободное программное обеспечение для хранения данных в формате ключ-значение в памяти. Он поставляется с несколькими командами, которые могут помочь в устранении неполадок и отладке проблем. Из-за того, что Redis работает как хранилище данных в памяти с использованием ключей и значений, многие из этих команд сосредоточены на управлении памятью, но есть и другие, которые ценны для предоставления обзора состояния вашего сервера Redis. В этом руководстве будут предоставлены подробности о том, как использовать некоторые из этих команд для диагностики и устранения проблем, с которыми вы можете столкнуться при использовании Redis.
Как использовать это руководство
Это руководство написано в виде шпаргалки с самостоятельными примерами. Мы рекомендуем вам переходить к любому разделу, который является актуальным для задачи, которую вы пытаетесь выполнить.
Команды, показанные в этом руководстве, были протестированы на сервере Ubuntu 22.04 с установленной версией Redis 6.0.16. Чтобы создать аналогичное окружение, вы можете следовать Шагу 1 нашего руководства по Установке и обеспечению безопасности Redis на Ubuntu 22.04. Мы продемонстрируем, как работают эти команды, запуская их с помощью redis-cli
, интерфейса командной строки Redis. Если вы используете другой интерфейс Redis — например, Redli, — точный вывод некоторых команд может отличаться.
Или вы можете предоставить управляемый экземпляр базы данных Redis для тестирования этих команд, но в зависимости от уровня контроля, предоставленного вашим поставщиком баз данных, некоторые команды в этом руководстве могут не работать так, как описано. Для предоставления управляемой базы данных DigitalOcean следуйте нашей документации по продукту Управляемые базы данных. Затем вам необходимо установить Redli или настроить туннель TLS, чтобы подключиться к управляемой базе данных по протоколу TLS.
Устранение проблем с памятью
memory usage
показывает, сколько памяти в настоящее время используется одним ключом. Он принимает имя ключа в качестве аргумента и выводит количество используемых байтов. Сначала установите примерную переменную:
- set key_meaningOfLife "Food"
Затем проверьте память с помощью memory usage
:
- memory usage key_meaningOfLife
Output(integer) 88
Для более общего понимания того, как ваш сервер Redis использует память, вы можете выполнить команду memory stats
:
- memory stats
Эта команда выводит массив метрик, связанных с памятью, и их значения. Вот метрики, сообщаемые memory stats
:
peak.allocated
: Пиковое количество байт, потребляемых Redistotal.allocated
: Общее количество байт, выделенных Redisstartup.allocated
: Начальное количество байт, потребляемых Redis при запускеreplication.backlog
: Размер журнала репликации в байтахclients.slaves
: Общий размер всех накладных расходов реплики, включая буферы вывода и запросов и контексты подключенияclients.normal
: Общий размер всех накладных расходов клиентаaof.buffer
: Общий размер текущих и буферов перезаписи файлов только для добавленияdb.0
: Накладные расходы основных и словарей истечения срока действия для каждой используемой базы данных на сервере, сообщаемые в байтахoverhead.total
: Сумма всех накладных расходов, используемых для управления пространством ключей Rediskeys.count
: Общее количество ключей, сохраненных во всех базах данных на сервереkeys.bytes-per-key
: Соотношение чистого использования памяти сервера иkeys.count
dataset.bytes
: Размер набора данных в байтахdataset.percentage
: Процент использования памяти Redis, занимаемыйdataset.bytes
peak.percentage
: Процентное отношениеpeak.allocated
кtotal.allocated
фрагментация
: Отношение количества памяти, используемой в данный момент, к физической памяти, которую Redis фактически использует
memory malloc-stats
предоставляет внутренний отчет о статистике от jemalloc, аллокаторе памяти, используемом Redis в системах Linux:
- memory malloc-stats
Если кажется, что у вас возникают проблемы, связанные с памятью, но анализ вывода предыдущих команд оказывается бесполезным, вы можете попробовать запустить memory doctor
:
- memory doctor
Эта функция выведет все проблемы потребления памяти, которые она сможет найти, и предложит потенциальные решения.
Получение общей информации о вашем экземпляре Redis
A debugging command that isn’t directly related to memory management is monitor
. This command allows you to review a constant stream of every command processed by the Redis server:
- monitor
OutputOK
1566157213.896437 [0 127.0.0.1:47740] "auth" "foobared"
1566157215.870306 [0 127.0.0.1:47740] "set" "key_1" "878"
Еще одна полезная команда для отладки – это info
, которая возвращает несколько блоков информации и статистики о сервере:
- info
Output# Server
redis_version:6.0.16
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:a3fdef44459b3ad6
redis_mode:standalone
os:Linux 5.15.0-41-generic x86_64
. . .
Эта команда возвращает много информации. Если вы хотите вернуть только один блок информации, вы можете указать его в качестве аргумента для info
:
- info CPU
Output# CPU
used_cpu_sys:173.16
used_cpu_user:70.89
used_cpu_sys_children:0.01
used_cpu_user_children:0.04
Обратите внимание, что информация, возвращаемая командой info
, будет зависеть от версии Redis, которую вы используете.
Использование команды keys
Команда keys
полезна в случаях, когда вы забыли название ключа или, возможно, создали его, но случайно ошиблись в названии. keys
ищет ключи, соответствующие шаблону:
- keys pattern
Поддерживаются следующие переменные в стиле глобуса:
?
– это маска, которая соответствует любому одиночному символу, поэтомуs?mmy
соответствуетsammy
,sommy
иsqmmy
*
– это маска, которая соответствует любому количеству символов, включая ноль символов, поэтомуsa*y
соответствуетsammy
,say
,sammmmmmy
иsalmony
- Вы можете указать два или более символов, которые могут входить в шаблон, заключив их в квадратные скобки, поэтому
s[ai]mmy
будет соответствоватьsammy
иsimmy
, но неsummy
- Чтобы установить маску, которая игнорирует один или несколько символов, заключите их в квадратные скобки и предшествуйте символу каретки (
^
), поэтомуs[^oi]mmy
будет соответствоватьsammy
иsxmmy
, но неsommy
илиsimmy
- Чтобы установить маску, которая включает диапазон букв, разделите начало и конец диапазона дефисом и заключите его в квадратные скобки, поэтому
s[a-o]mmy
будет соответствоватьsammy
,skmmy
иsommy
, но неsrmmy
Предупреждение: Документация Redis предупреждает, что keys
почти никогда не следует использовать в производственной среде, так как это может серьезно негативно сказаться на производительности.
Заключение
Это руководство описывает ряд команд, которые полезны для устранения и решения проблем, с которыми можно столкнуться при работе с Redis. Если вам интересны другие связанные команды, аргументы или процедуры, о которых вы хотели бы узнать в этом руководстве, пожалуйста, задавайте вопросы или делайте предложения в комментариях.
Для получения дополнительной информации о командах Redis ознакомьтесь с нашей серией учебников на тему Как управлять базой данных Redis.
Source:
https://www.digitalocean.com/community/cheatsheets/how-to-troubleshoot-issues-in-redis