MCPcopy Create free account
hub / github.com/Snapchat/KeyDB / propagateSubkeyExpire

Function propagateSubkeyExpire

src/db.cpp:1988–2027  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1986}
1987
1988void propagateSubkeyExpire(redisDb *db, int type, robj *key, robj *subkey)
1989{
1990 robj *argv[3];
1991 redisCommand *cmd = nullptr;
1992 switch (type)
1993 {
1994 case OBJ_SET:
1995 argv[0] = shared.srem;
1996 argv[1] = key;
1997 argv[2] = subkey;
1998 cmd = cserver.sremCommand;
1999 break;
2000
2001 case OBJ_HASH:
2002 argv[0] = shared.hdel;
2003 argv[1] = key;
2004 argv[2] = subkey;
2005 cmd = cserver.hdelCommand;
2006 break;
2007
2008 case OBJ_ZSET:
2009 argv[0] = shared.zrem;
2010 argv[1] = key;
2011 argv[2] = subkey;
2012 cmd = cserver.zremCommand;
2013 break;
2014
2015 case OBJ_CRON:
2016 return; // CRON jobs replicate in their own handler
2017
2018 default:
2019 serverPanic("Unknown subkey type");
2020 }
2021
2022 if (g_pserver->aof_state != AOF_OFF)
2023 feedAppendOnlyFile(cmd,db->id,argv,3);
2024 // Active replicas do their own expiries, do not propogate
2025 if (!g_pserver->fActiveReplica)
2026 replicationFeedSlaves(g_pserver->slaves,db->id,argv,3);
2027}
2028
2029/* Check if the key is expired. Note, this does not check subexpires */
2030int keyIsExpired(const redisDbPersistentDataSnapshot *db, robj *key) {

Callers 1

activeExpireCycleExpireFunction · 0.85

Calls 2

feedAppendOnlyFileFunction · 0.85
replicationFeedSlavesFunction · 0.85

Tested by

no test coverage detected