mirror of
https://github.com/fluencelabs/redis
synced 2025-03-30 22:31:03 +00:00
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…
x
Reference in New Issue
Block a user