From f14ade691fb73d2dd4dbcb9137bb73d4c9ff8f89 Mon Sep 17 00:00:00 2001 From: DarrenJiang13 Date: Fri, 16 Aug 2024 17:49:46 +0800 Subject: [PATCH] Add lfu support for DEBUG OBJECT command, added lfu_freq and lfu_access_time_minutes fields (#479) For `debug object` command, we use `val->lru` but ignore the `lfu` mode. So in `lfu` mode, `debug object` would return meaningless `lru` descriptions. Added two new fields lfu_freq and lfu_access_time_minutes. Signed-off-by: jiangyujie.jyj Co-authored-by: Binbin --- src/debug.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/debug.c b/src/debug.c index 6a568315b5..ce322ded8f 100644 --- a/src/debug.c +++ b/src/debug.c @@ -658,7 +658,9 @@ void debugCommand(client *c) { sds s = sdsempty(); s = sdscatprintf(s, "Value at:%p refcount:%d encoding:%s", (void *)val, val->refcount, strenc); if (!fast) s = sdscatprintf(s, " serializedlength:%zu", rdbSavedObjectLen(val, c->argv[2], c->db->id)); + /* Either lru or lfu field could work correctly which depends on server.maxmemory_policy. */ s = sdscatprintf(s, " lru:%d lru_seconds_idle:%llu", val->lru, estimateObjectIdleTime(val) / 1000); + s = sdscatprintf(s, " lfu_freq:%lu lfu_access_time_minutes:%u", LFUDecrAndReturn(val), val->lru >> 8); s = sdscatprintf(s, "%s", extra); addReplyStatusLength(c, s, sdslen(s)); sdsfree(s);