void linsertCommand(redisClient *c) { if (strcasecmp(c->argv[2]->ptr,"after") == 0) { pushxGenericCommand(c,c->argv[3],c->argv[4],REDIS_TAIL); } else if (strcasecmp(c->argv[2]->ptr,"before") == 0) { pushxGenericCommand(c,c->argv[3],c->argv[4],REDIS_HEAD); } else { addReply(c,shared.syntaxerr); } }
void linsertCommand(client *c) { c->argv[4] = tryObjectEncoding(c->argv[4]); if (strcasecmp(c->argv[2]->ptr,"after") == 0) { pushxGenericCommand(c,c->argv[3],c->argv[4],LIST_TAIL); } else if (strcasecmp(c->argv[2]->ptr,"before") == 0) { pushxGenericCommand(c,c->argv[3],c->argv[4],LIST_HEAD); } else { addReply(c,shared.syntaxerr); } }
// LINSERT key BEFORE|AFTER pivot(基准值) value // LINSERT命令的实现 void linsertCommand(client *c) { //对基准值进行优化编码 c->argv[4] = tryObjectEncoding(c->argv[4]); //比较where字符串,忽略大小写 if (strcasecmp(c->argv[2]->ptr,"after") == 0) { //如果是after,则是在基准值的后插入 pushxGenericCommand(c,c->argv[3],c->argv[4],LIST_TAIL); } else if (strcasecmp(c->argv[2]->ptr,"before") == 0) { //如果是before,则是在基准值的前插入 pushxGenericCommand(c,c->argv[3],c->argv[4],LIST_HEAD); } else { addReply(c,shared.syntaxerr); //否则发送语法错误信息 } }
void rpushxCommand(redisClient *c) { c->argv[2] = tryObjectEncoding(c->argv[2]); pushxGenericCommand(c,NULL,c->argv[2],REDIS_TAIL); }
void rpushxCommand(redisClient *c) { pushxGenericCommand(c,NULL,c->argv[2],REDIS_TAIL); }
void lpushxCommand(redisClient *c) { pushxGenericCommand(c,NULL,c->argv[2],REDIS_HEAD); }
//RPUSHX key value1 //RPUSHX命令的实现 void rpushxCommand(client *c) { c->argv[2] = tryObjectEncoding(c->argv[2]); pushxGenericCommand(c,NULL,c->argv[2],LIST_TAIL); }