redis慢日志

redis基本认识

redis安装后,在src和/usr/local/bin下有几个以redis开头的可执行文件,称为redis shell,这些基本可执行文件列表作用如下:

可执行文件作用
redis-server 启动redis
redis-cliredis命令行工具
redis-benchmark基准测试工具
redis-check-aofAOF持久化文件检测工具和修复工具
redis-check-dumpRDB持久化文件检测工具和修复工具
redis-sentinel启动redis-sentinel

推荐教程

入门:一篇文章入门 redis(万字长文干货) (qq.com)

八股:图解Redis介绍 | 小林coding (xiaolincoding.com)

redis安装

安装直接参考官方文档,保新也保质,看了一下linux的,没有centos的直接安装方式,一般就直接用源码安装,参考菜鸟教程即可。因为使用c写的,安装个gcc编译就好。或者我尝试了一下yum直接安装。也可以一步到位,就是版本肯定不高。配置文件在/etc里有一个,用这个配置文件启动也是ok的。

Install Redis on Linux | Redis

redis-server

启动

redis-server是启动redis的基本操作,可以在命令行中指定redis的conf文件,或者不填写使用默认配置文件,当然启动后需要的话可以加&使他后台运行。还可以使用脚本启动redis,更加的定制化,具体百度。

# 如果是用apt-get或者yum install安装的redis,
#可以直接通过下面的命令停止/启动/重启redis,
#具体系统可能有差别,百度一下。反正就是要找到这个redis-server然后执行它。
/etc/init.d/redis-server start

# 如果是源码安装,去src里面找
./redis-server xxx.conf &

停止

如果是通过源码安装的redis,则可以通过redis的客户端程序redis-clishutdown命令来停止

如果是apt之类的安装的也可以去//etc/init.d/里面找找。

# 停止服务
redis-cli -h 127.0.0.1 -p 6379 shutdown
# 继续使用server重启
redis-server xxx.conf


#或是apt安装的使用如下方式
/etc/init.d/redis-server restart
/etc/init.d/redis-server stop

如果上述方式都没有成功停止redis,则可以使用 

kill -9 pid号

redis-cli

因为redis一般都没有配环境变量,需要去你安装的src目录中运行redis-cli进行操作,以下的各种操作都可以进入cli后,在其中操作,也可以用命令式操作一步到位并且获得他的标准输出进行各种操作。常用参数就下面三个,有需要再去查。

交互式操作
#进入src目录后,或绝对路径也可
./redis-cli -h ip地址 -a 密码 -p 端口

ip:port>ping
命令式操作
#进入src目录后,或绝对路径也可
./redis-cli -h ip地址 -a 密码 -p 端口 命令(例如ping)

基本操作

参考官方文档或参考的第1个链接,都挺全的,现在暂且记录使用过的。

127.0.0.1:6379> SET mykey "Hello\nWorld"
OK
127.0.0.1:6379> GET mykey
Hello
World

info

使用info可以查询很多redis相关信息,具体分为如下不同方面:服务器信息,客户端信息,内存信息,持久化信息(就是内存到数据库或硬盘),复制信息,统计信息。

# 会输出全量info,如果需要具体的字段就在后面加就可以了
>info
>info server
>info stats
# Stats
total_connections_received:10080171
total_commands_processed:3971062339
instantaneous_ops_per_sec:2606
total_net_input_bytes:302752087700
total_net_output_bytes:271957465208
instantaneous_input_kbps:172.05
instantaneous_output_kbps:75.37
rejected_connections:0
sync_full:2
sync_partial_ok:0
sync_partial_err:2
expired_keys:783527
expired_stale_perc:0.18
expired_time_cap_reached_count:0
expire_cycle_cpu_milliseconds:260163
evicted_keys:0
keyspace_hits:788445337
keyspace_misses:13611475
pubsub_channels:0
pubsub_patterns:1
latest_fork_usec:29414
…………

slowlog

slowlog为慢查询,慢查询指的是命令执行时长比较长的查询。需要注意的是,slowlog是存储在内存中的,一般慢日志不为多比较好,并且可以通过shell进行持久化。

字段解析

slowlog-log-slower-than

的作用是指定命令执行时长的阈值,执行命令的时长超过这个阈值时就会被记录下来。它的单位是微秒(1秒 = 1000毫秒 = 1000000微秒),默认是10000微秒。如果把slowlog-log-slower-than设置为0,将会记录所有命令到日志中。如果把slowlog-log-slower-than设置小于0,将会不记录任何命令到日志中。如果把slowlog-log-slower-than设置为0,将会记录所有命令到日志中。

在实际的生产环境中,需要根据Redis并发量来调整该配置。因为Redis采用单线程响应命令,如果命令执行时间在1000微秒以上,那么Redis最多可支撑OPS不到1000,所以对于高并发场景的Redis建议设置为1000微秒

slowlog-max-len

slowlog-max-len的作用是指定慢查询日志最多存储的条数。实际上,Redis使用了一个列表存放慢查询日志,slowlog-max-len就是这个列表的最大长度。当一个新的命令满足满足慢查询条件时,被插入这个列表中。当慢查询日志列表已经达到最大长度时,最早插入的那条命令将被从列表中移出。比如,slowlog-max-len被设置为10,当有第11条命令插入时,在列表中的第1条命令先被移出,然后再把第11条命令放入列表。

记录慢查询是Redis会对长命令进行截断,不会大量占用大量内存。在实际的生产环境中,为了减缓慢查询被移出的可能和更方便地定位慢查询,建议将慢查询日志的长度调整的大一些。比如可以设置为1000以上

具体操作

--------------------------------------------------------
#### slowlog具体数据查询
#查询slowlog表长度
slowlog len
#查询slowlog日志,get后可以加条数,就print出来响应的条数,不加即为5
slowlog get 
--------------------------------------------------------
#### slowlog的设置(slowlog只有这两个参数)
# 如果想查询 只需要将set改成get,并且不添加参数
# 命令执行耗时超过 5 毫秒,记录慢日志
CONFIG SET slowlog-log-slower-than 5000
# 只保留最近 500 条慢日志
CONFIG SET slowlog-max-len 500

--------------------------------------------------------
#### 重置
# 将配置持久化到配置文件中
config rewrite
# 重置slowlog
slowlog reset
 slowlog get的输出结果解析:

131) 1) (integer) 11211 #唯一标识
     2) (integer) 1695010579 #时间戳
     3) (integer) 10896 #执行时长
     4) 1) "EVAL" # 使用的命令和参数

        2) "if (redis.call('hexists', KEYS[1], ARGV[2]) == 1) then redis.call('pexpire', KEYS[1], ARGV[1]); return 1; end; return 0;"
        3) "1"
        4) 
        5)
        6) 
     5) "192.168.0.1:2541"
     6) ""

reference:

redis cli命令 - milkty - 博客园 (cnblogs.com)

一篇文章快速搞懂Redis的慢查询分析 - 知乎 (zhihu.com)

redis启动.停止.重启 - nickTimer - 博客园 (cnblogs.com)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值