我redis里配置了db0、db1、db2、db3四个库,我想看每个库分别占用的大小应该怎么办? 另外jedis里有什么方法可以用吗?
走同样的路,发现不同的人生
Redis は、各 DB の実際の占有状況を取得する信頼できる方法を提供していないようです。これは主に、Redis 自体に DB ファイルの概念がなく、すべての DB が 1 つの RDB ファイルに混在しているためです。
データベースのサイズを推定するには、keys * を介してデータベース内のすべてのキーを走査し、debug object を使用してメモリを取得する必要があります。キーのフットプリント、serializedlength はメモリを占有するフィールドの長さです。 keys * 遍历 db 里所有的 key,然后用 debug object <key> 来获得 key 的内存占用,serializedlength 就是占用内存的字段长度。
keys *
debug object
serializedlength
debug object <key>
根据 RDB 格式文档,可以估算出每个 key 的实际占用为:
key_size = strlen(key) + serializedlength + 7
不过这个估算极不靠谱,因为 redis 可能将 key 做压缩,此时估算出来的值可能偏大。
下面的命令可以查看 db0 的大小(key 个数),其他的以此类推。
db0
select 0 dbsize
或者使用 info keyspace
info keyspace
Redis は、各 DB の実際の占有状況を取得する信頼できる方法を提供していないようです。これは主に、Redis 自体に DB ファイルの概念がなく、すべての DB が 1 つの RDB ファイルに混在しているためです。
データベースのサイズを推定するには、
keys *
を介してデータベース内のすべてのキーを走査し、debug object
を使用してメモリを取得する必要があります。キーのフットプリント、serializedlength
はメモリを占有するフィールドの長さです。keys *
遍历 db 里所有的 key,然后用debug object <key>
来获得 key 的内存占用,serializedlength
就是占用内存的字段长度。根据 RDB 格式文档,可以估算出每个 key 的实际占用为:
不过这个估算极不靠谱,因为 redis 可能将 key 做压缩,此时估算出来的值可能偏大。
下面的命令可以查看
db0
的大小(key 个数),其他的以此类推。或者使用
RDB 形式のドキュメントによると、各キーの実際の占有は次のように推定できます。 🎜 リーリー 🎜ただし、Redis はキーを圧縮する可能性があり、推定値が大きすぎる可能性があるため、この推定値は非常に信頼性が低くなります。 🎜 🎜次のコマンドは、info keyspace
db0
のサイズ (キーの数) などを確認できます。 🎜 リーリー 🎜 または、info keyspace
を使用して、すべての DB 情報を同時に取得します。 🎜