Implement subkey expires for sorted sets

Former-commit-id: a45d141597e56b3e0e580d545122af4272692a1e
This commit is contained in:
John Sully 2019-12-18 00:10:05 -05:00
parent a9967659cd
commit 9f5d7d44c7

View File

@ -111,8 +111,17 @@ void activeExpireCycleExpire(redisDb *db, expireEntry &e, long long now) {
}
break;
case OBJ_LIST:
case OBJ_ZSET:
if (zsetDel(val,(sds)pfat->nextExpireEntry().spsubkey.get())) {
deleted++;
if (zsetLength(val) == 0) {
activeExpireCycleExpireFullKey(db, e.key());
return;
}
}
break;
case OBJ_LIST:
default:
serverAssert(false);
}
@ -171,6 +180,7 @@ void expireMemberCore(client *c, robj *key, robj *subkey, long long basetime, lo
return;
}
double dblT;
switch (val->type)
{
case OBJ_SET:
@ -187,6 +197,13 @@ void expireMemberCore(client *c, robj *key, robj *subkey, long long basetime, lo
}
break;
case OBJ_ZSET:
if (zsetScore(val, szFromObj(subkey), &dblT) == C_ERR) {
addReply(c,shared.czero);
return;
}
break;
default:
addReplyError(c, "object type is unsupported");
return;