命令集介绍
-r 命令执行次数
redis-cli -r 3 ping
-i 如果设置了-r命令执行次数 -i可以设置执行间隔
redis-cli -r 5 -i 1 ping (每隔一秒执行一次Ping命令,一共执行5次)
-h 有两种意义,如果后面没跟任何参数表示帮助文档,后面有参数表示是设置一个域名
redis-cli -h
redis-cli -h 127.0.0.1
--help 命令行参数帮助提示
-x 从标准输入读取剩下的参数
echo "world" | redis-cli -x set hello 类似 set hello world
也可以下一个文件 command.txt 文件内写内容 set hello world
redis-cli -x < command.txt
-p 设置端口
redis-cli -h 127.0.0.1 -p 6379
-s 不经过tcp连接,自己传入一个套接字
如果一只一个套接字已经跟redis服务器连接假设套接字是 5
redis-cli -s 5
-a 传入密码
如果服务器段有配置密码为 123456
redis-cli -h 127.0.0.1 -p 6379 -a 123456
--pipe 将符合协议的数据批量发送到redis执行
好处可以将大量操作一次发送到redis服务端执行,减少网络交互
-v或--version redis版本
--raw 返回信息原样展示
--csv csv格式(对字符串中的部分转义字符会有展示,其他非可打印字符转化成16进制码值)
redis的协议中有很多\r\n,如果想调试看的话 可以用--csv格式
redis命令集涉及的代码在/src/redis-cli.go下
static int parseOptions(int argc, char **argv) {
int i;
for (i = 1; i < argc; i++) {
//是否是最后一个参数
int lastarg = i==argc-1;
if (!strcmp(argv[i],"-h") && !lastarg) {//参数是-h,且不是最后一个参数 设置host
sdsfree(config.hostip);
config.hostip = sdsnew(argv[++i]);
} else if (!strcmp(argv[i],"-h") && lastarg) {//参数是-h,且是最后一个参数,等同--help
usage();
} else if (!strcmp(argv[i],"--help")) {//输出命令行参数提示
usage();
} else if (!strcmp(argv[i],"-x")) {//从标准输入读取参数 类似 redis-cli -x < xxx.txt
config.stdinarg = 1;
} else if (!strcmp(argv[i],"-p") && !lastarg) {//参数是-p,且不是最后一个参数 设置端口
config.hostport = atoi(argv[++i]);
} else if (!strcmp(argv[i],"-s") && !lastarg) {//参数是-s,且不是最后一个参数 设置套接字
config.hostsocket = argv[++i];
} else if (!strcmp(argv[i],"-r") && !lastarg) {//命令重复执行次数,默认是1
config.repeat = strtoll(argv[++i],NULL,10);
} else if (!strcmp(argv[i],"-i") && !lastarg) {//重复执行命令,每次执行间隔,秒为单位默认是0
double seconds = atof(argv[++i]);
config.interval = seconds*1000000;
} else if (!strcmp(argv[i],"-n") && !lastarg) {//选择数据库
config.dbnum = atoi(argv[++i]);
} else if (!strcmp(argv[i],"-a") && !lastarg) {//设置认证密码
config.auth = argv[++i];
} else if (!strcmp(argv[i],"--raw")) {//raw格式输出(返回信息原样输出)
config.output = OUTPUT_RAW;
} else if (!strcmp(argv[i],"--csv")) {//csv格式(对字符串中的部分转义字符会有展示,其他非可打印字符转化成16进制码值)
config.output = OUTPUT_CSV;
} else if (!strcmp(argv[i],"--latency")) {
config.latency_mode = 1;
} else if (!strcmp(argv[i],"--latency-history")) {
config.latency_mode = 1;
config.latency_history = 1;
} else if (!strcmp(argv[i],"--slave")) {
config.slave_mode = 1;
} else if (!strcmp(argv[i],"--stat")) {
config.stat_mode = 1;
} else if (!strcmp(argv[i],"--scan")) {
config.scan_mode = 1;
} else if (!strcmp(argv[i],"--pattern") && !lastarg) {
config.pattern = argv[++i];
} else if (!strcmp(argv[i],"--intrinsic-latency") && !lastarg) {
config.intrinsic_latency_mode = 1;
config.intrinsic_latency_duration = atoi(argv[++i]);
} else if (!strcmp(argv[i],"--rdb") && !lastarg) {
config.getrdb_mode = 1;
config.rdb_filename = argv[++i];
} else if (!strcmp(argv[i],"--pipe")) {
config.pipe_mode = 1;
} else if (!strcmp(argv[i],"--pipe-timeout") && !lastarg) {
config.pipe_timeout = atoi(argv[++i]);
} else if (!strcmp(argv[i],"--bigkeys")) {
config.bigkeys = 1;
} else if (!strcmp(argv[i],"--eval") && !lastarg) { //执行lua脚本
config.eval = argv[++i];
} else if (!strcmp(argv[i],"-c")) {
config.cluster_mode = 1;
} else if (!strcmp(argv[i],"-d") && !lastarg) {
sdsfree(config.mb_delim);
config.mb_delim = sdsnew(argv[++i]);
} else if (!strcmp(argv[i],"-v") || !strcmp(argv[i], "--version")) {//版本号
sds version = cliVersion();
printf("redis-cli %s\n", version);
sdsfree(version);
exit(0);
} else {
if (argv[i][0] == '-') {
fprintf(stderr,
"Unrecognized option or bad number of args for: '%s'\n",
argv[i]);
exit(1);
} else {
/* Likely the command name, stop here. */
break;
}
}
}
return i;
}