Home

cuipf blog

26 Oct 2017

Redis

redis命令

  • redis支持在配置文件中, 将命令重新命名; 如下例:
//如将FLUSHALL 命名为复杂的名字保证只有自己的应用可以使用该命令
rename-command FLUSHALL oiupyhdggah12uit
//禁止某个命令可以直接设置为空字符串
rename-command FLUSHALL ""

redis通信协议

  • Redis通信协议是Redis客户端和Redis之间交流的语言, 通信协议规定了命令和返回值的格式, Redis支持两种通信协议:

    • 二进制安全的统一请求协议(unified request protocol);
      //SET foo bar的统一请求协议
      *3\r\n$3\r\nSET\r\n$3\r\nfoo\r\n$3\r\nbar\r\n
    
    • 比较直观的便于在telnet程序中输入的简单协议;

    这两种协议只是命令的格式有区别, 命令的返回值的格式是一样的;

redis的管理

redis-cli相关管理命令

查看耗时命令日志

  • 每一条命令执行时间超过限制时候, redis就会将命令的执行时间等信息加入耗时命令日志中供开发查看;
  • 该限制由配置文件中slowlog-log-slower-than配置项控制(默认是10000微妙 1000 000微妙=1秒);
  • 如果设置slowlog-log-slower-than设置为负数, 表示关闭耗时命令日志;
  • 耗时命令的日志存储在内存中, 可以通过配置文件中slowlog-max-len配置项来限制记录的条数(默认=128);
  • 命令输出格式:
    • 日志唯一的ID;
    • 命令执行的Unix时间;
    • 消耗时间单位微妙;
    • 命令以及其参数;
      192.168.154.128:6379[1]> slowlog get
       1) 1) (integer) 37
        2) (integer) 1508832190
        3) (integer) 13
        4) 1) "zrange"
       2) "myzset"
       3) "0"
       4) "2"
       5) "withscores"
        5) "192.168.154.128:43254"
        6) ""
       2) 1) (integer) 35
        2) (integer) 1508832165
        3) (integer) 4
        4) 1) "ZCARD"
       2) "myzset"
        5) "192.168.154.1:54125"
        6) ""
      

命令监控

redis提供了命令MONITOR命令来监控redis执行的所有命令; 在一个redis-cli输入命令: MONITOR, 然后打开另一个redis-cli执行命令, 查看监控输出:

192.168.154.128:6379[1]> monitor
OK
1508833404.033522 [0 192.168.154.128:43256] "select" "1"
1508833424.665236 [1 192.168.154.128:43256] "set" "foo" "bar1"
1508833430.233119 [1 192.168.154.128:43256] "set" "foo1" "bar2"

注: MONITOR非常的影响redis的性能, 一个客户端使用该命令, 会降低一半的负载能力; 所以该命令只适用于调试和纠错;

cuipf

scribble