美文网首页
Redis Shell

Redis Shell

作者: 扎啤 | 来源:发表于2017-11-16 17:58 被阅读0次

    Redis 提供了 redis-cliredis-serverredis-benchmark 等 Shell 工具。它们虽然比较简单,但是麻雀虽小五脏俱全,有时可以很巧妙地解决一些问题。

    redis-cli 详解

    1、-r

    -r(repeat)选项代表将命令执行多次,例如下面操作将会执行三次 ping 命令:

    $ redis-cli -r 3 ping
    PONG
    PONG
    PONG
    PONG
    
    2、-i

    -i(interval)选项代表每隔几秒执行一次命令,但是 -i 选项必须和 -r 选项一起使用,下面的操作会每隔 1 秒执行一次 ping,一共执行 5 次:

    $ redis-cli -r 5 -i 1 ping
    PONG
    PONG
    PONG
    PONG
    PONG
    

    注意 -i 的单位是秒,不支持毫秒为单位,但是如果想以每隔 10 毫秒执行一次,可以用 -i 0.01,例如:

    $ redis-cli -r 5 -i 0.01ping
    PONG
    PONG
    PONG
    PONG
    PONG
    

    例如下面的操作利用 -r 和 -i 选项,每隔 1 秒输出内存的使用量,一共输出 100 次

    $ redis-cli -r 100 -i 1 info |grep used_memory_human
    used_memory_human:793.10K
    used_memory_human:793.10K
    used_memory_human:793.10K
    ··········································
    used_memory_human:793.10K
    
    
    3、-x

    -x 选项代表从标准输入(stdin)读取数据作为 redis-cli 的最后一个参数例如下面的操作会将字符串 world 作为 set hello 的值:

    $ echo "world"  |  redis-cli  -x  set  hello
    OK
    
    4、-c

    -c(cluster)选项是连接 Redis Cluster 节点时需要使用的,-c 选项可以防止 moved 和 ask 异常。

    5、-a

    如果 Redis 配置了密码,可以用 -a(auth)选项,有了这个选项就不需要手动输入 auth 命令。

    6、--scan 和 --pattern

    --scan 选项和 --pattern 选项用于扫描指定模式的键,相当于使用 scan 命令。

    7、--slave

    --slave 选项是把当前客户端模拟成当前 Redis 节点的从节点,可以用来获取当前 Redis 节点的更新操作,合理的利用这个选项可以记录当前连接 Redis 节点的一些更新操作,这些更新操作很可能是实际开发业务时需要的数据。

    下面开启第一个客户端,使用 --slave 选项,看到同步已完成:

    $ redis-cli --slave
    SYNC with master, discarding 95 bytes of bulk transfer...
    SYNC done. Logging commands from master.
    "PING"
    

    在开启另一个客户端做一些更新操作:

    $ redis-cli
    127.0.0.1:6379> set hello world
    OK
    127.0.0.1:6379> set a b 
    OK
    127.0.0.1:6379> incr count 
    (integer) 1
    127.0.0.1:6379> get hello
    "world"
    

    再开启另一个客户端做一些更新操作

    $ redis-cli 
    127.0.0.1:6379> set hello world
    OK
    127.0.0.1:6379> incr count 
    (integer) 1
    127.0.0.1:6379> get hello
    "world"
    

    第一个客户端会收到 Redis 节点的更新操作:

    $ redis-cli --slave
    SYNC with master, discarding 95 bytes of bulk transfer...
    SYNC done. Logging commands from master.
    "PING"
    "PING"
    "PING"
    "PING"
    "PING"
    "SELECT","0"
    "set","hello","world"
    "incr","count"
    

    注意:PING 命令是由于主从复制产生的。

    8、--rdb

    --rdb 选项会请求 Redis 实例生成并发送 RDB 持久化文件,保存在本地。可使用它做持久化文件的定期备份。

    9、--pipe

    --pipe 选项用于将命令封装成 Redis 通信协议定义的数据格式,批量发送给 Redis 执行。

    10、--bigkeys

    --bigkeys 选项使用 scan 命令对 Redis 的键进行采样,从中找到内存占用比较大的键值,这些键可能是系统的瓶颈。

    11、--eva

    --eval 选项用于执行指定 Lua 脚本。

    12、--latency

    latency 有三个选项,分别是 --latency、--latency-history、--latency-dist。它们都可以检测网络延迟,对于 Redis 的开发和运维非常有帮助。

    13、--stat

    --stat 选项可以实时获取 Redis 的重要统计信息,虽然 info 命令中的统计信息更全,但是能实时看到一些增量的数据(例如 requests)对于 Redis 的运维还是有一定帮助。
    如下所示:

    $ redis-cli --stat
    ------- data ------ --------------------- load -------------------- - child -
    keys       mem      clients blocked requests            connections          
    2          1.79M    2       0       1922200 (+0)        22          
    2          1.79M    2       0       1922201 (+1)        22          
    2          1.79M    2       0       1922202 (+1)        22          
    2          1.79M    2       0       1922203 (+1)        22          
    
    14、--raw 和 --no-raw

    --no-raw 选项是要求命令的返回结果必须是原始的格式,--raw 恰恰相反,返回格式化后的结果。
    在 Redis 中设置一个中文的 value:

    $ redis-cli set hello "你好"
    OK
    

    如果正常执行 get 或者使用 --no-raw 选项,那么返回的结果是二进制格式:

    $ redis-cli get hello
    "\xe4\xbd\xa0\xe5\xa5\xbd"
    
    $ redis-cli --no-raw get hello
    "\xe4\xbd\xa0\xe5\xa5\xbd"
    

    如果使用了 --raw 选项,将会返回中文:

    $ redis-cli --raw get hello 
    你好
    

    相关文章

      网友评论

          本文标题:Redis Shell

          本文链接:https://www.haomeiwen.com/subject/twolvxtx.html