[转帖]REDIS SLOWLOG(慢日志)

redis,slowlog,日志 · 浏览次数 : 0

小编点评

**Redis Slow Log 命令** **功能:** - 读取和重置 Redis 慢查询日志。 **配置选项:** - `slowlog-log-slower-than`:设置执行时间大于此值的查询记录。 - `slowlog-max-len`:设置慢日志最多保存多少条日志。 **获取慢日志记录:** - `SLOWLOG GET` 命令:返回慢日志中的每个条目。 - `SLOWLOG GET 10`:返回最近 10 个新条目。 **注意:** - 慢日志仅存储在内存中,因此读取速度非常快。 - 使用 slowlog 时,请确保您使用最新版本的 Redis 客户端。 - 慢日志记录可能影响 Redis 的性能,因此请谨慎使用。

正文

slowlog 此命令用于读取和重置Redis慢查询日志。

一、Redis slowlog 官方概述:

Redis Slow Log是一个用于记录超过指定执行时间的查询的系统。执行时间不包括与客户端交谈,发送答复等I / O操作,而仅包括实际执行命令所需的时间(这是命令执行的唯一阶段,在该阶段线程被阻塞并且不能同时满足其他要求)。

通俗的讲使用这个命令可以读取或重置 Redis 慢速查询日志。就是 redis 可以把执行时间超过我们设定值的命令记录下来,slowlog 是记录到内存中的,所以查询非常快。这里的执行时间不包括 I/O 操作,比如与客户端,发送应答等,就是实际执行命令所需的时间。

二、设置 Redis slowlog

官方文档介绍:
(1)您可以使用以下两个参数配置慢速日志:slowlog-log-slower-than告诉Redis执行命令的时间(以微秒为单位)要超过多少秒才能记录命令。请注意,负数将禁用慢速日志记录,而零值将强制记录每个命令。 slowlog-max-len是慢日志的长度。最小值为零。当记录新命令并且慢速日志已经达到最大长度时,最旧的日志将从已记录命令队列中删除,以腾出空间。
(2)可以通过编辑redis.conf或在服务器运行时使用CONFIG GET和CONFIG SET命令来完成配置。
总结起来就是两种方式:
可以通过配置 redis.conf 来完成。
运行时,使用 CONFIG GET 和 CONFIG SET 命令配置。

第一个选项是 slowlog-log-slower-than ,它决定要对执行时间大于多少微秒(microsecond,1秒 = 1,000,000 微秒)的查询进行记录。
需要注意的是,设置负数表示禁用 slowlog ,而设置 0 则强制记录每个命令的执行情况。

redis 127.0.0.1:6379>config set slowlog-log-slower-than 10000
"OK"

redis 127.0.0.1:6379>config get slowlog-log-slower-than
1) "slowlog-log-slower-than"
2) "10000"

    第二选项是 slowlog-max-len ,它决定 slow log 最多能保存多少条日志, slow log 本身是一个 FIFO 队列,当队列大小超过 slowlog-max-len 时,最旧的一条日志将被删除,而最新的一条日志加入到 slow log ,以此类推。

    日志
    获取条数设置
    CONFIG GET slowlog-max-len
    设置保存条数
    CONFIG SET slowlog-max-len 1000
    例:
    让 slow log 最多保存 1000 条日志:
    CONFIG SET slowlog-max-len 1000

    另外,使用 slowlog len 命令可以查看当前已记录的数量。
    使用 slowlog reset 重置已记录的 slowlog 信息。

    三. 获取慢日志记录

    慢速日志存储在内存中,因此不会写入有关慢速命令执行信息的文件。 这样一来,慢速日志就非常快了,因为您可以启用所有命令的日志记录(将slowlog-log-slower-than-config参数设置为零),而对性能的影响不大。
    要读取慢日志,请使用SLOWLOG GET命令,该命令返回慢日志中的每个条目。 可以仅返回N个最新条目,该条目将附加参数传递给命令(例如SLOWLOG GET 10)。
    请注意,您需要最新版本(需要 2.2.12及以上版本的 redis 才能支持)的redis-cli才能读取慢速日志输出,因为它使用了协议的某些功能,这些功能以前在redis-cli中没有实现(深度嵌套的多批量回复)。
    另外,slow log 保存在内存里面,读写速度非常快,因此你可以放心地使用它,不必担心因为开启 slow log 而损害 Redis 的速度。

    文章知识点与官方知识档案匹配,可进一步学习相关知识
    MySQL入门技能树数据库组成31612 人正在系统学习中

    与[转帖]REDIS SLOWLOG(慢日志)相似的内容:

    [转帖]REDIS SLOWLOG(慢日志)

    slowlog 此命令用于读取和重置Redis慢查询日志。 一、Redis slowlog 官方概述: Redis Slow Log是一个用于记录超过指定执行时间的查询的系统。执行时间不包括与客户端交谈,发送答复等I / O操作,而仅包括实际执行命令所需的时间(这是命令执行的唯一阶段,在该阶段线程被

    [转帖]Redis学习六(Redis 阻塞的原因及其排查方向).

    https://www.cnblogs.com/jmcui/p/13926397.html 一、慢查询 因为 Redis 是单线程的,大量的慢查询可能会导致 redis-server 阻塞,可以通过 slowlog get n 获取慢日志,查看详情情况。 回到顶部 二、bigkey 大对象 bigk

    [转帖]Redis故障检查:识别慢查询操作

    https://weibo.com/ttarticle/p/show?id=2309404650615585505652 使用SLOWLOG命令查看Redis中的慢查询操作。 ​​前几篇日志总结了下对Redis部署时的一些配置,Redis启动后,面对各种请求,数据持久化到硬盘,很可能会出现内存不足等

    [转帖]Redis SLOWLOG命令

    https://deepinout.com/redis-cmd/redis-debug-cmd/redis-cmd-slowlog.html 文章目录 什么是 SLOWLOG 设置 SLOWLOG 查看 slow log 查看当前日志的数量 清空日志 Redis SLOWLOG命令 返回值 SLOW

    [转帖]redis最大连接和CPU使用过高

    https://www.jianshu.com/p/bca85370c808 redis默认最大连接数为10000 redis 使用的cpu过高是因为: 1.存在慢查询语句 slowlog get 10 获取慢查询语句 slowlog len 查看保存了多少慢查询语句 2.连接数量过多,导致要执行的

    [转帖]Redis 7 参数 修改 说明

    2022-06-16 14:491800原创Redis 本文链接:https://www.cndba.cn/dave/article/108066 在之前的博客我们介绍了Redis 7 的安装和配置,如下: Linux 7.8 平台 Redis 7 安装并配置开机自启动 操作手册https://ww

    [转帖]Redis 7.0 三节点哨兵(Sentinel)高可用 环境搭建手册

    2022-06-17 16:253480原创Redis 本文链接:https://www.cndba.cn/dave/article/108088 1 哨兵高可用架构说明 Redis 最早的高可用方案是主从复制,但这种方案存在一个问题,就是当主库宕机后,从库不会自动切成主库,需要人工干预。 所有在主

    [转帖]Redis 备份与恢复(RDB/AOF) 说明

    2022-06-16 20:364580原创Redis 本文链接:https://www.cndba.cn/dave/article/108068 1 RDB 方式 1.1 RDB 备份恢复说明 Redis 的备份恢复有两种方法:RDB和AOF。 其中RDB 文件是一个经过压缩的二进制文件,有两个R

    [转帖]Redis 性能优化的 13 条军规!史上最全

    https://zhuanlan.zhihu.com/p/118532234 Redis性能优化实战方案 Redis 是基于单线程模型实现的,也就是 Redis 是使用一个线程来处理所有的客户端请求的,尽管 Redis 使用了非阻塞式 IO,并且对各种命令都做了优化(大部分命令操作时间复杂度都是 O

    [转帖]Redis性能调优万字总结,面试必问!

    https://zhuanlan.zhihu.com/p/541745804 于哥你好,最近面试挺多的,尤其是在问到java面试题,Redis被问的特别多,比如 Redis的内存模型? Redis的底层数据结构是怎么的? Redis的多线程模型 Redis的集群原理 Redis的雪崩,击穿,穿透怎么