diff options
author | antirez <antirez@gmail.com> | 2013-01-29 13:43:13 +0100 |
---|---|---|
committer | antirez <antirez@gmail.com> | 2013-01-29 13:43:13 +0100 |
commit | e41d1d77e3f731cfe9133a94ea441de7ebc9f105 (patch) | |
tree | cb4192735dd44fd5dd643a95ae85331b34dbc00a /src/t_set.c | |
parent | d2b27f1d96a60bcfad48c5ae659741241559662b (diff) | |
download | redis-e41d1d77e3f731cfe9133a94ea441de7ebc9f105.tar.gz |
Generate del events when S*STORE commands delete the destination key.
Diffstat (limited to 'src/t_set.c')
-rw-r--r-- | src/t_set.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/t_set.c b/src/t_set.c index a22bbb67b..e56a5fd4e 100644 --- a/src/t_set.c +++ b/src/t_set.c @@ -706,7 +706,7 @@ void sinterGenericCommand(redisClient *c, robj **setkeys, unsigned long setnum, if (dstkey) { /* Store the resulting set into the target, if the intersection * is not an empty set. */ - dbDelete(c->db,dstkey); + int deleted = dbDelete(c->db,dstkey); if (setTypeSize(dstset) > 0) { dbAdd(c->db,dstkey,dstset); addReplyLongLong(c,setTypeSize(dstset)); @@ -715,6 +715,9 @@ void sinterGenericCommand(redisClient *c, robj **setkeys, unsigned long setnum, } else { decrRefCount(dstset); addReply(c,shared.czero); + if (deleted) + notifyKeyspaceEvent(REDIS_NOTIFY_GENERIC,"del", + dstkey,c->db->id); } signalModifiedKey(c->db,dstkey); server.dirty++; @@ -873,7 +876,7 @@ void sunionDiffGenericCommand(redisClient *c, robj **setkeys, int setnum, robj * } else { /* If we have a target key where to store the resulting set * create this key with the result set inside */ - dbDelete(c->db,dstkey); + int deleted = dbDelete(c->db,dstkey); if (setTypeSize(dstset) > 0) { dbAdd(c->db,dstkey,dstset); addReplyLongLong(c,setTypeSize(dstset)); @@ -883,6 +886,9 @@ void sunionDiffGenericCommand(redisClient *c, robj **setkeys, int setnum, robj * } else { decrRefCount(dstset); addReply(c,shared.czero); + if (deleted) + notifyKeyspaceEvent(REDIS_NOTIFY_GENERIC,"del", + dstkey,c->db->id); } signalModifiedKey(c->db,dstkey); server.dirty++; |