From fc7221739c13a56036f341d453850e2cce2dcbb2 Mon Sep 17 00:00:00 2001 From: John Sully Date: Mon, 19 Jul 2021 15:11:33 +0000 Subject: [PATCH] Info command should show how many keys are cached in RAM vs storage provider Former-commit-id: 08597bee69bc16ca7c3d5ff31020472774c6eec9 --- src/db.cpp | 6 +++--- src/server.cpp | 7 ++++--- src/server.h | 2 +- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/db.cpp b/src/db.cpp index 947f03427..98b70574d 100644 --- a/src/db.cpp +++ b/src/db.cpp @@ -2963,13 +2963,13 @@ dict_iter redisDbPersistentData::random() return dict_iter(m_pdict, de); } -size_t redisDbPersistentData::size() const +size_t redisDbPersistentData::size(bool fCachedOnly) const { - if (m_spstorage != nullptr && !m_fAllChanged) + if (m_spstorage != nullptr && !m_fAllChanged && !fCachedOnly) return m_spstorage->count() + m_cnewKeysPending; return dictSize(m_pdict) - + (m_pdbSnapshot ? (m_pdbSnapshot->size() - dictSize(m_pdictTombstone)) : 0); + + (m_pdbSnapshot ? (m_pdbSnapshot->size(fCachedOnly) - dictSize(m_pdictTombstone)) : 0); } bool redisDbPersistentData::removeCachedValue(const char *key) diff --git a/src/server.cpp b/src/server.cpp index 183440f3b..ed153d599 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -6096,10 +6096,11 @@ sds genRedisInfoString(const char *section) { if (sections++) info = sdscat(info,"\r\n"); info = sdscatprintf(info, "# Keyspace\r\n"); for (j = 0; j < cserver.dbnum; j++) { - long long keys, vkeys; + long long keys, vkeys, cachedKeys; keys = g_pserver->db[j]->size(); vkeys = g_pserver->db[j]->expireSize(); + cachedKeys = g_pserver->db[j]->size(true /* fCachedOnly */); // Adjust TTL by the current time mstime_t mstime; @@ -6111,8 +6112,8 @@ sds genRedisInfoString(const char *section) { if (keys || vkeys) { info = sdscatprintf(info, - "db%d:keys=%lld,expires=%lld,avg_ttl=%lld\r\n", - j, keys, vkeys, static_cast(g_pserver->db[j]->avg_ttl)); + "db%d:keys=%lld,expires=%lld,avg_ttl=%lld,cached_keys=%lld\r\n", + j, keys, vkeys, static_cast(g_pserver->db[j]->avg_ttl), cachedKeys); } } } diff --git a/src/server.h b/src/server.h index 5178e86ba..edbcb4c8a 100644 --- a/src/server.h +++ b/src/server.h @@ -1095,7 +1095,7 @@ public: redisDbPersistentData(redisDbPersistentData &&) = default; size_t slots() const { return dictSlots(m_pdict); } - size_t size() const; + size_t size(bool fCachedOnly = false) const; void expand(uint64_t slots) { dictExpand(m_pdict, slots); } void trackkey(robj_roptr o, bool fUpdate)