Redis Shell

参考:
1.《Redis开发与运维》
2. https://segmentfault.com/a/1190000009811404

Redis Shell

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

redis-cli

帮助:redis-cli --help

redis-cli 3.2.6

Usage: redis-cli [OPTIONS] [cmd [arg [arg ...]]]
  -h <hostname>      服务端 hostname (默认 127.0.0.1)
  -p <port>          服务端 端口 (默认 6379)
  -s <socket>        服务端 socket (会覆盖 -h -p 设置的内容)
  -a <password>      密码(密码错误之类不会直接保错,而是在操作时才会保错,这时可以使用 Redis 的 AUTH 命令再次认证)
  -r <repeat>        重复执行特定命令 repeat 次
  -i <interval>      每隔几秒执行一次,-i 必须与 -r 同时使用,-r 设置的是执行的总次数
  -n <db>            选择操作的数据库,相当于在进入客户端后使用 SELECT 命令
  -x                 -x 选项代表从标准输入(stdin)读取数据作为 redis-cli 的最后一个参数
  -d <delimiter>     多行语句分隔符设定(默认 \n)
  -c                 -c(cluster)选项是连接 Redis Cluster 节点时需要使用的,-c选项可以防止moved和ask异常。
  --raw              返回结果必须是原始的格式
  --no-raw           返回格式化后的结果
  --csv              输出使用 CSV 格式
  --stat             滚动打印关于服务端中 内存、客户端等 统计信息
  --latency          滚动打印关于服务端中 内存、客户端等 统计信息
  --latency-history  与 --latency 类似但是随着时间的推移跟踪延迟的变化。迭代时间默认是 15 秒 可以使用 -i 参数进行设置。
  --latency-dist     与 --latency 类似但是随着时间的推移跟踪延迟的变化。迭代时间默认是 15 秒 可以使用 -i 参数进行设置。
  --lru-test <keys>  模拟 LRU 算法的一个二八分布的缓存的工作量
  --slave            把当前客户端模拟成当前 Redis 节点的从节点,可以用来获取当前Redis 节点的更新操作。合理的利用这个选项可以记录当前连接Redis节点的一些更新操作
  --rdb <filename>   会请求 Redis 实例生成并发送 RDB 持久化文件,保存在本地。
  --pipe             用于将命令封装成Redis通信协议定义的数据格式,批量发送给 Redis 执行。
  --pipe-timeout <n> 类似 --pipe 只是添加了一个超时处理
  --bigkeys          使用SCAN命令对 Redis 的键进行采样,从中找到内存占用比较大的键值。这些键可能是系统的瓶颈,通过该命令我们可以找到这些瓶颈。
  --scan             使用 SCAN 命令查询所有 key
  --pattern <pat>    配合 --scan 命令扫描指定模式的键
  --intrinsic-latency  运行一个测试来衡量内在的系统延迟。测试将运行指定的秒。
  --eval <file>      发送一个 EVAL 命令执行 <file> 中的 Lua 脚本
  --ldb              配合 --eval 使用,允许调试 Redis 中的 Lua 脚本
  --ldb-sync-mode    像 --ldb 采用同步的 Lua 调试器,在这种模式下,服务端将会阻塞,脚本改变的内容是不会从服务端内存回滚的。
  --help             输出帮助信息并退出 可以简化为 -h
  --version          输出 Redis 版本信息并退出 可以简化为 -v

Examples:
  cat /etc/passwd | redis-cli -x set mypasswd
  redis-cli get mypasswd
  redis-cli -r 100 lpush mylist x
  redis-cli -r 100 -i 1 info | grep used_memory_human:
  redis-cli --eval myscript.lua key1 key2 , arg1 arg2 arg3
  redis-cli --scan --pattern '*:12345*'

redis-server

redis-server 除了启动 Redis 外,还有一个–test-memory 选项。redis-server --test-memory 可以用来检测当前操作系统能否稳定地分配指定容量的内存给Redis,通过这种检测可以有效避免因为内存问题造成Redis崩溃,例如下面操作检测当前操作系统能否提供1G的内存给 Redis:

redis-server --test-memory 1024

整个内存检测的时间比较长(我测试时使用的实际超出一个小时)。当输出 passed this test 时说明内存检测完毕,最后会提示 --test-memory 只是简单检测,如果质疑可以使用更加专业的内存检测工具。

Please keep the test running several minutes per GB of memory.
Also check 
http://www.memtest86.com/
http://pyropus.ca/software/memtester/

该功能更偏向于测试,例如:想快速占满机器内存做一些极端条件的测试,这个功能是个不错的选择。

redis-benchmark

redis-benchmark 可以为 Redis 做基准性能测试。它提供了很多选项帮助开发和运维人员测试Redis的相关性能。

redis-benchmark --help
Usage: redis-benchmark [-h <host>] [-p <port>] [-c <clients>] [-n <requests]> [-k <boolean>]

 -h <hostname>      服务端 hostname (默认 127.0.0.1)
 -p <port>          服务端 端口 (默认 6379)
 -s <socket>        服务端 socket (会覆盖 -h -p 设置的内容)
 -a <password>      密码(密码错误之类不会直接保错,而是在操作时才会保错,这时可以使用 Redis 的 AUTH 命令再次认证)
 -c <clients>       客户端的并发数量(默认是50)
 -n <requests>      客户端请求总量(默认是100000)
 -d <size>          使用 SET/GET 添加的数据的字节大小 (默认 2)
 -dbnum <db>        选择一个数据库进行测试 (默认 0)
 -k <boolean>       客户端是否使用keepalive,1为使用,0为不使用,(默认为 1)
 -r <keyspacelen>   使用 SET/GET/INCR 命令添加数据 key, SADD 添加随机数据,keyspacelen 指定的是添加 键的数量
 -P <numreq>        每个请求 pipeline 的数据量(默认为1,没有 pipeline )
 -e                 如果服务器回复错误,在stdout上显示它们。
                   (每秒显示不超过1个错误)
 -q                 仅仅显示redis-benchmark的requests per second信息
 --csv              将结果按照csv格式输出
 -l                 循环测试
 -t <tests>         可以对指定命令进行基准测试
 -I                 空闲模式。 只需打开N个空闲连接并等待。
 
Examples:
 使用默认配置运行基准测试 127.0.0.1:6379:
   $ redis-benchmark

 使用20个并行客户端,总共100k个请求 192.168.1.1:
   $ redis-benchmark -h 192.168.1.1 -p 6379 -n 100000 -c 20

 仅使用SET测试填充127.0.0.1:6379约100万个键::
   $ redis-benchmark -t set -n 1000000 -r 100000000

 Benchmark 127.0.0.1:6379 for a few commands producing CSV output:
   $ redis-benchmark -t ping,set,get -n 100000 --csv

 Benchmark a specific command line:
   $ redis-benchmark -r 10000 -n 10000 eval 'return redis.call("ping")' 0

 Fill a list with 10000 random elements:
   $ redis-benchmark -r 10000 -n 10000 lpush mylist __rand_int__

 On user specified command lines __rand_int__ is replaced with a random integer
 with a range of values selected by the -r option.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值