long repeat;
int dbnum;
int interactive;
+ char *auth;
} config;
struct redisCommand {
};
static struct redisCommand cmdTable[] = {
+ {"auth",2,REDIS_CMD_INLINE},
{"get",2,REDIS_CMD_INLINE},
{"set",3,REDIS_CMD_BULK},
{"setnx",3,REDIS_CMD_BULK},
{"append",3,REDIS_CMD_BULK},
+ {"substr",4,REDIS_CMD_INLINE},
{"del",-2,REDIS_CMD_INLINE},
{"exists",2,REDIS_CMD_INLINE},
{"incr",2,REDIS_CMD_INLINE},
{"zincrby",4,REDIS_CMD_BULK},
{"zrem",3,REDIS_CMD_BULK},
{"zremrangebyscore",4,REDIS_CMD_INLINE},
+ {"zmerge",-3,REDIS_CMD_INLINE},
+ {"zmergeweighed",-4,REDIS_CMD_INLINE},
{"zrange",-4,REDIS_CMD_INLINE},
+ {"zrank",3,REDIS_CMD_BULK},
+ {"zrevrank",3,REDIS_CMD_BULK},
{"zrangebyscore",-4,REDIS_CMD_INLINE},
{"zcount",4,REDIS_CMD_INLINE},
{"zrevrange",-4,REDIS_CMD_INLINE},
{"msetnx",-3,REDIS_CMD_MULTIBULK},
{"monitor",1,REDIS_CMD_INLINE},
{"multi",1,REDIS_CMD_INLINE},
- {"exec",1,REDIS_CMD_MULTIBULK},
+ {"exec",1,REDIS_CMD_INLINE},
{"discard",1,REDIS_CMD_INLINE},
+ {"hset",4,REDIS_CMD_MULTIBULK},
+ {"hget",3,REDIS_CMD_BULK},
+ {"hdel",3,REDIS_CMD_BULK},
+ {"hlen",2,REDIS_CMD_INLINE},
+ {"hkeys",2,REDIS_CMD_INLINE},
+ {"hvals",2,REDIS_CMD_INLINE},
+ {"hgetall",2,REDIS_CMD_INLINE},
+ {"hexists",3,REDIS_CMD_BULK},
{NULL,0,0}
};
} else if (!strcmp(argv[i],"-n") && !lastarg) {
config.dbnum = atoi(argv[i+1]);
i++;
+ } else if (!strcmp(argv[i],"-a") && !lastarg) {
+ config.auth = argv[i+1];
+ i++;
} else if (!strcmp(argv[i],"-i")) {
config.interactive = 1;
} else {
}
static void usage() {
- fprintf(stderr, "usage: redis-cli [-h host] [-p port] [-r repeat_times] [-n db_num] [-i] cmd arg1 arg2 arg3 ... argN\n");
- fprintf(stderr, "usage: echo \"argN\" | redis-cli [-h host] [-p port] [-r repeat_times] [-n db_num] cmd arg1 arg2 ... arg(N-1)\n");
+ fprintf(stderr, "usage: redis-cli [-h host] [-p port] [-a authpw] [-r repeat_times] [-n db_num] [-i] cmd arg1 arg2 arg3 ... argN\n");
+ fprintf(stderr, "usage: echo \"argN\" | redis-cli [-h host] [-a authpw] [-p port] [-r repeat_times] [-n db_num] cmd arg1 arg2 ... arg(N-1)\n");
fprintf(stderr, "\nIf a pipe from standard input is detected this data is used as last argument.\n\n");
fprintf(stderr, "example: cat /etc/passwd | redis-cli set my_passwd\n");
fprintf(stderr, "example: redis-cli get my_passwd\n");
fprintf(stderr, "example: redis-cli -r 100 lpush mylist x\n");
- fprintf(stderr, "\nRun in interactive mode: redis-cli -i \n");
+ fprintf(stderr, "\nRun in interactive mode: redis-cli -i or just don't pass any command\n");
exit(1);
}
printf(">> ");
retval = fgets(line, size, stdin);
} while (retval && *line == '\n');
-
line[strlen(line) - 1] = '\0';
- fpurge(stdin);
-
return retval;
}
char *line = buffer;
char **ap, *args[max];
+ if (config.auth != NULL) {
+ char *authargv[2];
+
+ authargv[0] = "AUTH";
+ authargv[1] = config.auth;
+ cliSendCommand(2, convertToSds(2, authargv));
+ }
+
while (prompt(line, size)) {
argc = 0;
for (ap = args; (*ap = strsep(&line, " \t")) != NULL;) {
if (**ap != '\0') {
if (argc >= max) break;
+ if (strcasecmp(*ap,"quit") == 0 || strcasecmp(*ap,"exit") == 0)
+ exit(0);
ap++;
argc++;
}
config.repeat = 1;
config.dbnum = 0;
config.interactive = 0;
+ config.auth = NULL;
firstarg = parseOptions(argc,argv);
-
argc -= firstarg;
argv += firstarg;
- if (config.interactive == 1) repl();
- if (argc < 1) usage();
+ if (argc == 0 || config.interactive == 1) repl();
argvcopy = convertToSds(argc, argv);