#define REDIS_CMD_INLINE 1
#define REDIS_CMD_BULK 2
+#define REDIS_CMD_MULTIBULK 3
#define REDIS_NOTUSED(V) ((void) V)
{"smove",4,REDIS_CMD_BULK},
{"sismember",3,REDIS_CMD_BULK},
{"scard",2,REDIS_CMD_INLINE},
+ {"spop",2,REDIS_CMD_INLINE},
+ {"srandmember",2,REDIS_CMD_INLINE},
{"sinter",-2,REDIS_CMD_INLINE},
{"sinterstore",-3,REDIS_CMD_INLINE},
{"sunion",-2,REDIS_CMD_INLINE},
{"sdiff",-2,REDIS_CMD_INLINE},
{"sdiffstore",-3,REDIS_CMD_INLINE},
{"smembers",2,REDIS_CMD_INLINE},
+ {"zadd",4,REDIS_CMD_BULK},
+ {"zrem",3,REDIS_CMD_BULK},
+ {"zremrangebyscore",4,REDIS_CMD_INLINE},
+ {"zrange",4,REDIS_CMD_INLINE},
+ {"zrangebyscore",4,REDIS_CMD_INLINE},
+ {"zrevrange",4,REDIS_CMD_INLINE},
+ {"zcard",2,REDIS_CMD_INLINE},
+ {"zscore",3,REDIS_CMD_BULK},
{"incrby",3,REDIS_CMD_INLINE},
{"decrby",3,REDIS_CMD_INLINE},
{"getset",3,REDIS_CMD_BULK},
{"info",1,REDIS_CMD_INLINE},
{"mget",-2,REDIS_CMD_INLINE},
{"expire",3,REDIS_CMD_INLINE},
+ {"expireat",3,REDIS_CMD_INLINE},
{"ttl",2,REDIS_CMD_INLINE},
{"slaveof",3,REDIS_CMD_INLINE},
{"debug",-2,REDIS_CMD_INLINE},
+ {"mset",-3,REDIS_CMD_MULTIBULK},
+ {"msetnx",-3,REDIS_CMD_MULTIBULK},
{NULL,0,0}
};
if ((fd = cliConnect()) == -1) return 1;
/* Build the command to send */
- for (j = 0; j < argc; j++) {
- if (j != 0) cmd = sdscat(cmd," ");
- if (j == argc-1 && rc->flags & REDIS_CMD_BULK) {
- cmd = sdscatprintf(cmd,"%d",sdslen(argv[j]));
- } else {
+ if (rc->flags & REDIS_CMD_MULTIBULK) {
+ cmd = sdscatprintf(cmd,"*%d\r\n",argc);
+ for (j = 0; j < argc; j++) {
+ cmd = sdscatprintf(cmd,"$%d\r\n",sdslen(argv[j]));
cmd = sdscatlen(cmd,argv[j],sdslen(argv[j]));
+ cmd = sdscatlen(cmd,"\r\n",2);
+ }
+ } else {
+ for (j = 0; j < argc; j++) {
+ if (j != 0) cmd = sdscat(cmd," ");
+ if (j == argc-1 && rc->flags & REDIS_CMD_BULK) {
+ cmd = sdscatprintf(cmd,"%d",sdslen(argv[j]));
+ } else {
+ cmd = sdscatlen(cmd,argv[j],sdslen(argv[j]));
+ }
}
- }
- cmd = sdscat(cmd,"\r\n");
- if (rc->flags & REDIS_CMD_BULK) {
- cmd = sdscatlen(cmd,argv[argc-1],sdslen(argv[argc-1]));
cmd = sdscat(cmd,"\r\n");
+ if (rc->flags & REDIS_CMD_BULK) {
+ cmd = sdscatlen(cmd,argv[argc-1],sdslen(argv[argc-1]));
+ cmd = sdscatlen(cmd,"\r\n",2);
+ }
}
anetWrite(fd,cmd,sdslen(cmd));
retval = cliReadReply(fd);