【Redis开发与运维】学习笔记(三)-----Redis慢查询
简介
慢查询是什么
慢查询日志就是系统在命令执行前后计算每条命令的执行时间,当超过预设阀值,就将这条命令的相关信息(例如:发生时间,耗时,命令的详细信息)记录下来。
慢查询能可以有效地帮助我们找到Redis可能存在的瓶颈。
如下图显示的redis中一条命令的生命周期,慢查询只统计步骤3。
慢查询的两个配置参数
-
预设阀值-slowlog-log-slower-than
它的单位是微秒(1秒=1000毫秒=1000000微秒),默认值是10000。如果slowlog-log-slower-than=0会记录所有的命令,slowlog-log-slowerthan<0对于任何命令都不会进行记录。 -
慢查询记录存放地址-slowlog-max-len
Redis使用了一个列表来存储慢查询日志,slowlog-max-len就是列表的最大长度。一个新的命令满足慢查询条件时被插入到这个列表中,当慢查询日志列表已处于其最大长度时,最早插入的一个命令将从列表中移出
注:修改配置文件的两个方式:修改配置文件,或者使用config set命令动态修改。如果要Redis将配置持久化到本地配置文件,需要执行config rewrite命令
慢查询日志的访问和管理
- 获取慢查询日志
slowlog get [n] #n可以指定条数
- 慢查询日志的属性组成
慢查询日志的标识、id、发生时间戳、命令耗时、执行命令和参数,慢查询列表- 获取慢查询日志列表当前的长度
slowlog len
- 慢查询日志重置(也可以认为是对列表进行清理操作)
slowlog reset
- 获取慢查询日志列表当前的长度
慢查询建议
-
slowlog-max-len配置建议:线上建议调大慢查询列表,记录慢查询时
Redis会对长命令做截断操作,并不会占用大量内存。增大慢查询列表可以
减缓慢查询被剔除的可能,例如线上可设置为1000以上。 -
slowlog-log-slower-than配置建议:默认值超过10毫秒判定为慢查询,
需要根据Redis并发量调整该值。由于Redis采用单线程响应命令,对于高流
量的场景,如果命令执行时间在1毫秒以上,那么Redis最多可支撑OPS不到
1000。因此对于高OPS场景的Redis建议设置为1毫秒
Redis Shell
Redis提供了redis-cli、redis-server、redis-benchmark等Shell工具。
redis-cli详解
- -r(repeat)选项代表将命令执行多次
redis-cli -r n(次数) 命令
- -i(interval)选项代表每隔几秒执行一次命令,但是-i选项必须和-r选
项一起使用redis-cli -r n(执行次数) -i n(隔的时间数) 命令
- -x选项代表从标准输入(stdin)读取数据作为redis-cli的最后一个参
数,例如下面的操作会将字符串world作为set hello的值echo "world" | redis-cli -x set hello
- -c(cluster)选项是连接Redis Cluster节点时需要使用的,-c选项可以防止moved和ask异常。
- -a(auth)选项,有了这个选项就不需要手动输入auth命令
- -scan和–pattern
–scan选项和–pattern选项用于扫描指定模式的键,相当于使用scan命令 - –slave选项是把当前客户端模拟成当前Redis节点的从节点,可以用来
获取当前Redis节点的更新操作。 - –rdb选项会请求Redis实例生成并发送RDB持久化文件,保存在本地。
- –pipe选项用于将命令封装成Redis通信协议定义的数据格式,批量发送
给Redis执行 - .–bigkeys