From 5b9357a6b3b22bad794931bb71f56c612d6e7aac Mon Sep 17 00:00:00 2001 From: antirez Date: Wed, 23 Jan 2013 17:04:18 +0100 Subject: [PATCH] Initial test events for the new keyspace notification API. --- src/db.c | 3 +++ src/redis.c | 2 ++ src/t_string.c | 6 ++++++ 3 files changed, 11 insertions(+) diff --git a/src/db.c b/src/db.c index 7f1702968..b45c73e5a 100644 --- a/src/db.c +++ b/src/db.c @@ -240,6 +240,7 @@ void delCommand(redisClient *c) { for (j = 1; j < c->argc; j++) { if (dbDelete(c->db,c->argv[j])) { signalModifiedKey(c->db,c->argv[j]); + notifyKeyspaceEvent("del",c->argv[j],c->db->id); server.dirty++; deleted++; } @@ -391,6 +392,8 @@ void renameGenericCommand(redisClient *c, int nx) { dbDelete(c->db,c->argv[1]); signalModifiedKey(c->db,c->argv[1]); signalModifiedKey(c->db,c->argv[2]); + notifyKeyspaceEvent("rename_from",c->argv[1],c->db->id); + notifyKeyspaceEvent("rename_to",c->argv[2],c->db->id); server.dirty++; addReply(c,nx ? shared.cone : shared.ok); } diff --git a/src/redis.c b/src/redis.c index 095ddb9ea..e6835c1ea 100644 --- a/src/redis.c +++ b/src/redis.c @@ -689,6 +689,7 @@ void activeExpireCycle(void) { propagateExpire(db,keyobj); dbDelete(db,keyobj); + notifyKeyspaceEvent("expired",keyobj,db->id); decrRefCount(keyobj); expired++; server.stat_expiredkeys++; @@ -2431,6 +2432,7 @@ int freeMemoryIfNeeded(void) { delta -= (long long) zmalloc_used_memory(); mem_freed += delta; server.stat_evictedkeys++; + notifyKeyspaceEvent("evicted",keyobj,db->id); decrRefCount(keyobj); keys_freed++; diff --git a/src/t_string.c b/src/t_string.c index 0a7f22583..a3e58e5b9 100644 --- a/src/t_string.c +++ b/src/t_string.c @@ -62,6 +62,8 @@ void setGenericCommand(redisClient *c, int nx, robj *key, robj *val, robj *expir setKey(c->db,key,val); server.dirty++; if (expire) setExpire(c->db,key,mstime()+milliseconds); + notifyKeyspaceEvent("set",key,c->db->id); + if (expire) notifyKeyspaceEvent("expire",key,c->db->id); addReply(c, nx ? shared.cone : shared.ok); } @@ -253,6 +255,7 @@ void msetGenericCommand(redisClient *c, int nx) { for (j = 1; j < c->argc; j += 2) { c->argv[j+1] = tryObjectEncoding(c->argv[j+1]); setKey(c->db,c->argv[j],c->argv[j+1]); + notifyKeyspaceEvent("set",c->argv[j+1],c->db->id); } server.dirty += (c->argc-1)/2; addReply(c, nx ? shared.cone : shared.ok); @@ -287,6 +290,7 @@ void incrDecrCommand(redisClient *c, long long incr) { else dbAdd(c->db,c->argv[1],new); signalModifiedKey(c->db,c->argv[1]); + notifyKeyspaceEvent("incrby",c->argv[1],c->db->id); server.dirty++; addReply(c,shared.colon); addReply(c,new); @@ -336,6 +340,7 @@ void incrbyfloatCommand(redisClient *c) { else dbAdd(c->db,c->argv[1],new); signalModifiedKey(c->db,c->argv[1]); + notifyKeyspaceEvent("incrbyfloat",c->argv[1],c->db->id); server.dirty++; addReplyBulk(c,new); @@ -383,6 +388,7 @@ void appendCommand(redisClient *c) { totlen = sdslen(o->ptr); } signalModifiedKey(c->db,c->argv[1]); + notifyKeyspaceEvent("append",c->argv[1],c->db->id); server.dirty++; addReplyLongLong(c,totlen); }