summaryrefslogtreecommitdiff
path: root/src/t_set.c
diff options
context:
space:
mode:
authorantirez <antirez@gmail.com>2013-01-29 13:43:13 +0100
committerantirez <antirez@gmail.com>2013-01-29 13:43:13 +0100
commite41d1d77e3f731cfe9133a94ea441de7ebc9f105 (patch)
treecb4192735dd44fd5dd643a95ae85331b34dbc00a /src/t_set.c
parentd2b27f1d96a60bcfad48c5ae659741241559662b (diff)
downloadredis-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.c10
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++;