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

Function activeExpireCycleExpire

src/expire.cpp:75–179  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

73
74
75int activeExpireCycleExpire(redisDb *db, const char *key, expireEntry &e, long long now, size_t &tried) {
76 if (!e.FFat())
77 {
78 activeExpireCycleExpireFullKey(db, key);
79 ++tried;
80 return 1;
81 }
82
83 expireEntryFat *pfat = e.pfatentry();
84 robj *val = db->find(key);
85 int deleted = 0;
86
87 redisObjectStack objKey;
88 initStaticStringObject(objKey, (char*)key);
89
90 while (!pfat->FEmpty())
91 {
92 ++tried;
93 if (pfat->nextExpireEntry().when > now)
94 break;
95
96 // Is it the full key expiration?
97 if (pfat->nextExpireEntry().spsubkey == nullptr)
98 {
99 activeExpireCycleExpireFullKey(db, key);
100 return ++deleted;
101 }
102
103 switch (val->type)
104 {
105 case OBJ_SET:
106 if (setTypeRemove(val,pfat->nextExpireEntry().spsubkey.get())) {
107 deleted++;
108 if (setTypeSize(val) == 0) {
109 activeExpireCycleExpireFullKey(db, key);
110 return deleted;
111 }
112 }
113 break;
114
115 case OBJ_HASH:
116 if (hashTypeDelete(val,(sds)pfat->nextExpireEntry().spsubkey.get())) {
117 deleted++;
118 if (hashTypeLength(val) == 0) {
119 activeExpireCycleExpireFullKey(db, key);
120 return deleted;
121 }
122 }
123 break;
124
125 case OBJ_ZSET:
126 if (zsetDel(val,(sds)pfat->nextExpireEntry().spsubkey.get())) {
127 deleted++;
128 if (zsetLength(val) == 0) {
129 activeExpireCycleExpireFullKey(db, key);
130 return deleted;
131 }
132 }

Callers 2

activeExpireCycleCoreMethod · 0.85
expireSlaveKeysFunction · 0.85

Calls 15

setTypeRemoveFunction · 0.85
setTypeSizeFunction · 0.85
hashTypeDeleteFunction · 0.85
hashTypeLengthFunction · 0.85
zsetDelFunction · 0.85
zsetLengthFunction · 0.85
sdsdupFunction · 0.85
incrRefCountFunction · 0.85
aePostFunctionFunction · 0.85
executeCronJobExpireHookFunction · 0.85
sdsfreeFunction · 0.85

Tested by

no test coverage detected