Modules hooks: FLUSHDB event example.
This commit is contained in:
parent
ed833c9f99
commit
bc1ef48e56
@ -5870,6 +5870,8 @@ void moduleFireServerEvent(uint64_t eid, int subid, void *data) {
|
||||
modulePopulateClientInfoStructure(&civ1,data,
|
||||
el->event.dataver);
|
||||
moduledata = &civ1;
|
||||
} else if (eid == REDISMODULE_EVENT_FLUSHDB) {
|
||||
moduledata = data;
|
||||
}
|
||||
el->callback(&ctx,el->event,subid,moduledata);
|
||||
moduleFreeContext(&ctx);
|
||||
|
@ -50,6 +50,31 @@ void clientChangeCallback(RedisModuleCtx *ctx, RedisModuleEvent e, uint64_t sub,
|
||||
ci->id,ci->addr,ci->port);
|
||||
}
|
||||
|
||||
void flushdbCallback(RedisModuleCtx *ctx, RedisModuleEvent e, uint64_t sub, void *data)
|
||||
{
|
||||
REDISMODULE_NOT_USED(ctx);
|
||||
REDISMODULE_NOT_USED(e);
|
||||
|
||||
RedisModuleFlushInfo *fi = data;
|
||||
if (sub == REDISMODULE_SUBEVENT_FLUSHDB_START) {
|
||||
if (fi->dbnum != -1) {
|
||||
RedisModuleCallReply *reply;
|
||||
reply = RedisModule_Call(ctx,"DBSIZE","");
|
||||
long long numkeys = RedisModule_CallReplyInteger(reply);
|
||||
printf("FLUSHDB event of database %d started (%lld keys in DB)\n",
|
||||
fi->dbnum, numkeys);
|
||||
} else {
|
||||
printf("FLUSHALL event started\n");
|
||||
}
|
||||
} else {
|
||||
if (fi->dbnum != -1) {
|
||||
printf("FLUSHDB event of database %d ended\n",fi->dbnum);
|
||||
} else {
|
||||
printf("FLUSHALL event ended\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* This function must be present on each Redis module. It is used in order to
|
||||
* register the commands into the Redis server. */
|
||||
int RedisModule_OnLoad(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) {
|
||||
@ -61,5 +86,7 @@ int RedisModule_OnLoad(RedisModuleCtx *ctx, RedisModuleString **argv, int argc)
|
||||
|
||||
RedisModule_SubscribeToServerEvent(ctx,
|
||||
RedisModuleEvent_ClientChange, clientChangeCallback);
|
||||
RedisModule_SubscribeToServerEvent(ctx,
|
||||
RedisModuleEvent_FlushDB, flushdbCallback);
|
||||
return REDISMODULE_OK;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user