Redis: показать размер базы данных / размер для ключей
мой экземпляр redis кажется очень большим, и я хотел бы узнать, какая из нескольких баз данных, которые у меня есть, потребляет сколько памяти. Редис INFO команда просто показывает мне общий размер и количество ключей в базе данных, которая не дает мне много понимания... Поэтому любые инструменты/идеи, которые дают мне дополнительную информацию при мониторинге сервера redis, будут оценены.
документация Redis не показывает мне никаких команд, которые могут вернуть потребляемый память определенных ключей, поэтому я думаю, что если какой-либо багги-код будет писать много "мусора" для redis, это может быть очень трудно найти...
7 ответов:
Итак, мое решение моей собственной проблемы: после игры с
redis-cliнемного дольше я узнал, чтоDEBUG OBJECT <key>показывает что-то вродеserializedlengthключ, который был на самом деле то, что я искал...для всей базы данных, вам нужно суммировать все значения для
KEYS *что не должно быть слишком сложно с скриптовый язык по вашему выбору...плохо то, что redis.io на самом деле не имеет много информации о
DEBUG OBJECT.
взгляните на этот проект он выводит некоторые интересные статистические данные о keyspaces на основе регулярных выражений и префиксов. Он использует
DEBUG OBJECTкоманда и сканирует БД, идентифицируя группы ключей и оценивая процент пространства, которое они занимают.https://github.com/snmaynard/redis-audit
вывод выглядит так:
Summary ---------------------------------------------------+--------------+-------------------+--------------------------------------------------- Key | Memory Usage | Expiry Proportion | Last Access Time ---------------------------------------------------+--------------+-------------------+--------------------------------------------------- notification_3109439 | 88.14% | 0.0% | 2 minutes user_profile_3897016 | 11.86% | 99.98% | 20 seconds ---------------------------------------------------+--------------+-------------------+---------------------------------------------------или это одна: https://github.com/sripathikrishnan/redis-rdb-tools который делает полный анализ всего пространства ключей путем анализа дампа.rdb файл в автономном режиме. Это тоже хорошо работает. Он может дать вам средний/минимальный / максимальный размер для записей в вашей БД и даже сделает это на основе префикса.
возможно, Вам будет очень полезно попробовать ключи Redis и сгруппировать их по типу. Сальваторе написал инструмент под названием redis-sampler это выдает около 10000
RANDOMKEYкоманды, за которыми следуетTYPEполученных ключей. В считанные секунды,или минуты, вы должны получить довольно точное представление о распределении ключевых типов.Я написал расширение (к сожалению, не везде с открытым исходным кодом, потому что это связано с работой), что добавляет немного самоанализа ключа имена с помощью регулярных выражений, которые дают вам представление о том, какие типы ключей приложений (в соответствии с любой структурой именования, которую вы используете) хранятся в Redis. В сочетании с более общим выходом redis-sampler, это должно дать вам очень хорошее представление о том, что происходит.
MEMORY USAGE keyкоманда дает вам количество байтов, которые ключ и его значение должны храниться в ОЗУ.сообщенное использование-это общее количество выделений памяти для данных и административных накладных расходов, требуемых для ключа его значения (исходная документация redis)
возможно, вы можете сделать некоторый самоанализ на файл БД. Протокол относительно прост (но не хорошо документирован), поэтому вы можете написать парсер для него, чтобы определить, какие отдельные ключи занимают много места.
новые предложения:
вы пробовали использовать
MONITORчтобы увидеть, что пишется, живешь? Возможно, вы можете найти проблему с данными в движении.
вы можете использовать приложение .nethttps://github.com/abhiyx/RedisSizeCalculator чтобы рассчитать размер ключа redis,
пожалуйста, не стесняйтесь давать свои отзывы для того же
Comments