aeEventLoop *el;
char *hostip;
int hostport;
+ char *hostsocket;
int keepalive;
long long start;
long long totlatency;
client c = zmalloc(sizeof(struct _client));
char err[ANET_ERR_LEN];
- c->fd = anetTcpNonBlockConnect(err,config.hostip,config.hostport);
+ if (config.hostsocket == NULL)
+ c->fd = anetTcpNonBlockConnect(err,config.hostip,config.hostport);
+ else
+ c->fd = anetUnixNonBlockConnect(err,config.hostsocket);
+
if (c->fd == ANET_ERR) {
zfree(c);
fprintf(stderr,"Connect: %s\n",err);
} else if (!strcmp(argv[i],"-p") && !lastarg) {
config.hostport = atoi(argv[i+1]);
i++;
+ } else if (!strcmp(argv[i],"-s") && !lastarg) {
+ config.hostsocket = argv[i+1];
+ i++;
} else if (!strcmp(argv[i],"-d") && !lastarg) {
config.datasize = atoi(argv[i+1]);
i++;
printf("Wrong option '%s' or option argument missing\n\n",argv[i]);
printf("Usage: redis-benchmark [-h <host>] [-p <port>] [-c <clients>] [-n <requests]> [-k <boolean>]\n\n");
printf(" -h <hostname> Server hostname (default 127.0.0.1)\n");
- printf(" -p <hostname> Server port (default 6379)\n");
+ printf(" -p <port> Server port (default 6379)\n");
+ printf(" -s <socket> Server socket (overrides host and port)\n");
printf(" -c <clients> Number of parallel connections (default 50)\n");
printf(" -n <requests> Total number of requests (default 10000)\n");
printf(" -d <size> Data size of SET/GET value in bytes (default 2)\n");
config.hostip = "127.0.0.1";
config.hostport = 6379;
+ config.hostsocket = NULL;
parseOptions(argc,argv);
aeMain(config.el);
endBenchmark();
+ prepareForBenchmark("MSET (10 keys, multi bulk)");
+ c = createClient();
+ if (!c) exit(1);
+ c->obuf = sdscatprintf(c->obuf,"*%d\r\n$4\r\nMSET\r\n", 11);
+ {
+ int i;
+ char *data = zmalloc(config.datasize+2);
+ memset(data,'x',config.datasize);
+ for (i = 0; i < 10; i++) {
+ c->obuf = sdscatprintf(c->obuf,"$%d\r\n%s\r\n",config.datasize,data);
+ }
+ zfree(data);
+ }
+ prepareClientForReply(c,REPLY_RETCODE);
+ createMissingClients(c);
+ aeMain(config.el);
+ endBenchmark();
+
prepareForBenchmark("SET");
c = createClient();
if (!c) exit(1);
- c->obuf = sdscatprintf(c->obuf,"SET foo_rand000000000000 %d\r\n",config.datasize);
+ c->obuf = sdscat(c->obuf,"SET foo_rand000000000000 ");
{
char *data = zmalloc(config.datasize+2);
memset(data,'x',config.datasize);
prepareForBenchmark("LPUSH");
c = createClient();
if (!c) exit(1);
- c->obuf = sdscat(c->obuf,"LPUSH mylist 3\r\nbar\r\n");
+ c->obuf = sdscat(c->obuf,"LPUSH mylist bar\r\n");
prepareClientForReply(c,REPLY_INT);
createMissingClients(c);
aeMain(config.el);
prepareForBenchmark("SADD");
c = createClient();
if (!c) exit(1);
- c->obuf = sdscat(c->obuf,"SADD myset 24\r\ncounter_rand000000000000\r\n");
+ c->obuf = sdscat(c->obuf,"SADD myset counter_rand000000000000\r\n");
prepareClientForReply(c,REPLY_RETCODE);
createMissingClients(c);
aeMain(config.el);
prepareForBenchmark("LPUSH (again, in order to bench LRANGE)");
c = createClient();
if (!c) exit(1);
- c->obuf = sdscat(c->obuf,"LPUSH mylist 3\r\nbar\r\n");
+ c->obuf = sdscat(c->obuf,"LPUSH mylist bar\r\n");
prepareClientForReply(c,REPLY_RETCODE);
createMissingClients(c);
aeMain(config.el);