предисловие
Наконец-то вышла первая часть Redis Advanced. Что касается медленного запроса Redis, да, хорошие братья, вы правильно прочитали, это медленный запрос. Неожиданно вы не думаете, что только базы данных, такие как mysql, имеют медленные запросы. Посмотри на это, разве ты не научился этому? Вы с нетерпением ждете этого, во всяком случае, я не знал этого раньше. Итак, приступим. спешить спешить.....
Обзор
Медленный запрос Mysql Я думаю, вы знакомы с журналом медленных запросов.Так называемый журнал медленных запросов заключается в том, что система рассчитывает время выполнения каждой команды до и после выполнения команды.При превышении заданного порога соответствующая информация этой команды (например, время возникновения, время выполнения, подробности команды) записываются. Эта функция такая вкусная, как же у меня нет Redis.
жизненный цикл
В Redis выполнение команды можно разделить на четыре этапа.Отправить команду, очередь команд, выполнение команды, ответ результата, следует отметить, что медленный запрос в Redis учитывает только третий шаг (выполнение команды). я рисую угадай
Лучшие практики
Вопрос в том, как установить время, подобное Mysql, и записать время в журнал медленных запросов, если оно превышает это время? Как читать эти журналы медленных запросов? Ханк, я уже помог своим братьям это организовать.
1 Настройка порогов
Redis предоставляетlowlog-log-slower-thanНастройте, чтобы установить предустановленный порог, его единица измерения — микросекунды (1 секунда = 1000 миллисекунд = 1000000 микросекунд), значение по умолчанию — 10000, если выполняется «очень медленная» команда (например, клавиши *), если ее время выполнения превышает 10000 микросекунд, то оно будет записано в журнал медленных запросов. Следует отметить, что если slowlog-log-slower-than=0 будет регистрировать все команды, slowlog-log-slower- than
2 хранилища журналов
Redis предоставляетslowlog-max-lenКоманда буквально только показывает, сколько журналов медленных запросов может быть сохранено, и не указывает, где они хранятся, верно? Да, добрые братья правы. На самом деле Redis использует список для хранения журналов медленных запросов, а slowlog-max-len — это максимальная длина списка. Новая команда удовлетворяетУсловия медленных запросов вставляются в этот список, когда список журнала медленных запросов достигает максимальной длины, самая ранняя вставленная команда будет удалена из списка. Например, slowlog-max-len по умолчанию имеет значение 128. Когда вставляется 129-й медленный запрос, первая команда в начале очереди будет удален.Одна часть данных удаляется из очереди, а 129-й медленный запрос ставится в очередь.
3 Конфигурация
Redis предоставляет два способа настройки конфигурации.Первый — изменить файл конфигурации запуска.Таким образом, вам нужно найти конфигурацию Redis, соответствующую загрузке вашего хорошего брата (не ошибитесь, иначе вы не можно не пробовать). Например, моя конфигурация находится в /home/redis-4.0.0, а затем выполните следующую команду. Я даже разобрался с порядком исполнения и к чему стучать.Ты точно не хочешь обратить внимание и поставить лайк?(Кто не лайкнул и не последовал - все отморозки,любящие заниматься проституцией за бесценок.Эй, эй, ладно, не бей, не бей).
Другой — использовать команду config set для динамического изменения.В этом случае лучше не начинать с файла конфигурации по умолчанию, иначе будет сообщено об ошибке при сохранении конфигурации (про-тест).
Первый
## 编辑配置,当然你可以使用linux的其他修改命令
vim redis.conf
## 打开后使用英文/进行搜索
/slowlog-log-slower-than
## 这个时候就能找到了,然后就是修改值按i编辑设置成1秒
slowlog-log-slower-than 1000000
## 按ESC键退出编辑,然后保存,重启Redis,还不会重启,看我第二篇Linux、docker Redis安装与配置就好了
:wq
второй
## 进入redis客户端
redis-cli
## 动态配置超时时间为1秒
config set slowlog-log-slower-than 1000000
## 动态配置对列长度为500
config set slowlog-max-len 500
## 持久化写入配置文件
config rewrite
4 Получить журналы
Эй, мой хороший брат также узнал, что журнал, о котором я только что упомянул, находится в очереди, он не сказал мне, в какой я очереди, как мне получить журнал. Эй, Antirez уже разобрался с этим для нас (Antirez yyds). Введите следующую команду, чтобы получить соответствующий журнал медленных запросов.
## 格式。n代表条数
slowlog get [n]
## 格式。查看有多少条日志
slowlog len
## 格式。重置日志
slowlog reset
5 Разбор журнала
Выполнение приведенной выше команды вернет содержимое, как показано на рисунке, а именно: идентификатор журнала медленных запросов, отметку времени выполнения, время команды, команду выполнения и параметры (этому хорошему брату действительно нужно практиковаться, иначе он действительно выиграл не работает).
предложение
- Рекомендуется увеличить параметр slow log-max-len списка медленных запросов онлайн, так как при записи медленных запросов Redis будет обрезать длинные команды, не занимая много памяти. Увеличение списка медленных запросов может снизить вероятность отбраковки медленных запросов.
- Если значение по умолчанию для конфигурации slowlog-log-slower-than превышает 10 миллисекунд, это считается медленным запросом, и это значение необходимо скорректировать в соответствии с объемом параллелизма Redis. Так как Redis является однопоточным, рекомендуется настроить этот параметр ниже.
- Медленный запрос записывает только время выполнения команды и не включает в себя очередь команд и время передачи по сети. Следовательно, время выполнения клиентом команды будет больше, чем фактическое время выполнения команды.
- Так как журнал медленных запросов является очередью «первым поступил — первым обслужен», то есть при наличии большого количества медленных запросов некоторые команды медленных запросов могут быть потеряны.Чтобы этого не произошло, команду slow get можно выполняется периодически, чтобы сделать журнал медленных запросов постоянным в другом хранилище (например, MySQL).
Это конец этого вопроса.Если что-то не так, пожалуйста, оставьте сообщение в комментариях хороших братьев.Кроме тогоПросите внимания, просите лайков
Далее: Redis Pipeline этого достаточно
Предыдущая:Глобальный анализ управления ключами Redis