mirror of https://github.com/redis/redis.git
				
				
				
			variadic SADD
This commit is contained in:
		
							parent
							
								
									009db67645
								
							
						
					
					
						commit
						22f294d24a
					
				| 
						 | 
					@ -102,7 +102,7 @@ struct redisCommand redisCommandTable[] = {
 | 
				
			||||||
    {"ltrim",ltrimCommand,4,0,NULL,1,1,1,0,0},
 | 
					    {"ltrim",ltrimCommand,4,0,NULL,1,1,1,0,0},
 | 
				
			||||||
    {"lrem",lremCommand,4,0,NULL,1,1,1,0,0},
 | 
					    {"lrem",lremCommand,4,0,NULL,1,1,1,0,0},
 | 
				
			||||||
    {"rpoplpush",rpoplpushCommand,3,REDIS_CMD_DENYOOM,NULL,1,2,1,0,0},
 | 
					    {"rpoplpush",rpoplpushCommand,3,REDIS_CMD_DENYOOM,NULL,1,2,1,0,0},
 | 
				
			||||||
    {"sadd",saddCommand,3,REDIS_CMD_DENYOOM,NULL,1,1,1,0,0},
 | 
					    {"sadd",saddCommand,-3,REDIS_CMD_DENYOOM,NULL,1,1,1,0,0},
 | 
				
			||||||
    {"srem",sremCommand,3,0,NULL,1,1,1,0,0},
 | 
					    {"srem",sremCommand,3,0,NULL,1,1,1,0,0},
 | 
				
			||||||
    {"smove",smoveCommand,4,0,NULL,1,2,1,0,0},
 | 
					    {"smove",smoveCommand,4,0,NULL,1,2,1,0,0},
 | 
				
			||||||
    {"sismember",sismemberCommand,3,0,NULL,1,1,1,0,0},
 | 
					    {"sismember",sismemberCommand,3,0,NULL,1,1,1,0,0},
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										15
									
								
								src/t_set.c
								
								
								
								
							
							
						
						
									
										15
									
								
								src/t_set.c
								
								
								
								
							| 
						 | 
					@ -218,9 +218,9 @@ void setTypeConvert(robj *setobj, int enc) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void saddCommand(redisClient *c) {
 | 
					void saddCommand(redisClient *c) {
 | 
				
			||||||
    robj *set;
 | 
					    robj *set;
 | 
				
			||||||
 | 
					    int j, added = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    set = lookupKeyWrite(c->db,c->argv[1]);
 | 
					    set = lookupKeyWrite(c->db,c->argv[1]);
 | 
				
			||||||
    c->argv[2] = tryObjectEncoding(c->argv[2]);
 | 
					 | 
				
			||||||
    if (set == NULL) {
 | 
					    if (set == NULL) {
 | 
				
			||||||
        set = setTypeCreate(c->argv[2]);
 | 
					        set = setTypeCreate(c->argv[2]);
 | 
				
			||||||
        dbAdd(c->db,c->argv[1],set);
 | 
					        dbAdd(c->db,c->argv[1],set);
 | 
				
			||||||
| 
						 | 
					@ -230,13 +230,14 @@ void saddCommand(redisClient *c) {
 | 
				
			||||||
            return;
 | 
					            return;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if (setTypeAdd(set,c->argv[2])) {
 | 
					
 | 
				
			||||||
        signalModifiedKey(c->db,c->argv[1]);
 | 
					    for (j = 2; j < c->argc; j++) {
 | 
				
			||||||
        server.dirty++;
 | 
					        c->argv[j] = tryObjectEncoding(c->argv[j]);
 | 
				
			||||||
        addReply(c,shared.cone);
 | 
					        if (setTypeAdd(set,c->argv[j])) added++;
 | 
				
			||||||
    } else {
 | 
					 | 
				
			||||||
        addReply(c,shared.czero);
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    if (added) signalModifiedKey(c->db,c->argv[1]);
 | 
				
			||||||
 | 
					    server.dirty += added;
 | 
				
			||||||
 | 
					    addReplyLongLong(c,added);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void sremCommand(redisClient *c) {
 | 
					void sremCommand(redisClient *c) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue