Redis中慢日志slowlog的配置及使用
redis运维中,对于数据的查询的监控十分重要。
什么是slowlog?
Slow log 是 Redis 用来记录查询执行时间的日志系统。
查询执行时间指的是不包括像客户端响应(talking)、发送回复等 IO 操作,而单单是执行一个查询命令所耗费的时间。
需要注意的是,slow log 保存在内存里面,读写速度非常快,不损害 Redis 的速度,但是会占用一定的宝贵的内存开销。
配置参数说明
- slowlog-log-slower-than:
- 决定要对执行时间大于多少微秒(microsecond,1秒 = 1,000,000 微秒)的查询进行记录
- slowlog-max-len:
- 它决定 slow log 最多能保存多少条日志, slow log 本身是一个 FIFO 队列,当队列大小超过 slowlog-max-len 时,最旧的一条日志将被删除,而最新的一条日志加入到 slow log ,以此类推。
设置slowlog
设置slowlog有两种方式:
- 方式一:通过配置redis.conf文件进行配置
# 执行时间大于多少微秒(microsecond,1秒 = 1,000,000 微秒)的查询进行记录。
slowlog-log-lower-than 1000
#最多能保存多少条日志
slowlog-max-len 200
- 方式二:通过CONFIG命令进行配置
# 配置查询时间超过1毫秒的, 第一个参数单位是微秒
> config set slowlog-log-lower-than 1000
# 保存200条慢查记录
> config set slowlog-max-len 200
查看 slow log
- 查看日志
可以使用 SLOWLOG GET 或者 SLOWLOG GET number 命令,前者打印所有 slow log ,最大长度取决于 slowlog-max-len 选项的值,而 SLOWLOG GET number 则只打印指定数量的日志。
- 查看当前日志数量: 使用SHOW LEN命令查看日志数量。
redis> SLOWLOG LEN
(integer) 14
- 清空日志:SLOWLOG RESET
redis> SLOWLOG LEN
(integer) 14
redis> SLOWLOG RESET
OK
redis> SLOWLOG LEN
(integer) 0
tips:
可用版本:>= 2.2.12
时间复杂度:O(1)
返回值:取决于不同命令,返回不同的值。