我redis里配置了db0、db1、db2、db3四个库,我想看每个库分别占用的大小应该怎么办? 另外jedis里有什么方法可以用吗?
走同样的路,发现不同的人生
redis 看起來沒有提供一個可靠的方法來獲得每個 db 的實際佔用,這主要是因為 redis 本身就沒有 db 檔案概念,所有 db 都是混在一個 rdb 檔案裡面的。
要估算 db 的大小,需要透過 keys * 遍历 db 里所有的 key,然后用 debug object <key> 来获得 key 的内存占用,serializedlength 就是佔用記憶體的欄位長度。
keys *
debug object <key>
serializedlength
根據 RDB 格式文檔,可以估算出每個 key 的實際佔用為:
key_size = strlen(key) + serializedlength + 7
不過這個估算極不靠譜,因為 redis 可能會將 key 做壓縮,此時估算出來的值可能偏大。
下面的指令可以查看 db0 的大小(key 個數),其他的以此類推。
db0
select 0 dbsize
或使用 info keyspace 同時得到所有 db 資訊。
info keyspace
redis 看起來沒有提供一個可靠的方法來獲得每個 db 的實際佔用,這主要是因為 redis 本身就沒有 db 檔案概念,所有 db 都是混在一個 rdb 檔案裡面的。
要估算 db 的大小,需要透過
keys *
遍历 db 里所有的 key,然后用debug object <key>
来获得 key 的内存占用,serializedlength
就是佔用記憶體的欄位長度。根據 RDB 格式文檔,可以估算出每個 key 的實際佔用為:
不過這個估算極不靠譜,因為 redis 可能會將 key 做壓縮,此時估算出來的值可能偏大。
下面的指令可以查看
db0
的大小(key 個數),其他的以此類推。或使用
info keyspace
同時得到所有 db 資訊。