Redis中每个数据库的内存利用率

11

Redis允许在16个不同的“数据库”(0到15)中存储数据。有没有一种方法可以获得每个数据库所使用的内存和磁盘空间? INFO命令仅列出每个数据库的键数。

2个回答

5
不,您无法单独控制每个数据库。这些“数据库”只是用于逻辑分区您的数据。
您可以做的事情(取决于您的具体要求和设置)是旋转多个Redis实例,每个实例执行不同的任务,并且每个实例都有自己的redis.conf文件以及一个内存限制。但是,磁盘空间不能被限制,至少在Redis级别上不能。
顺便提一下:请记住,16个数据库号码并非硬编码 - 您可以在redis.conf中设置它。

这是另一个选项,但我不确定每个实例在内存消耗方面有多大开销。 - appanponn
您可以通过在redis.conf文件中使用maxmemory来设置所有数据库可以利用的最大RAM。该值以字节为单位。虽然这不是针对每个数据库的,但仍应该进行设置,以避免redis利用所有RAM并导致操作系统将其终止的情况发生。这将导致数据丢失或需要重新缓存数据。 - Saad Khan

0

我通过在Redis数据库中对所有键调用dump并测量使用的总字节数来完成此操作。这将减慢您的服务器速度,并需要一些时间。似乎dump返回的大小约为实际内存使用量的4倍。这些数字将让您了解哪个db使用了最多的空间。

以下是我的代码:https://gist.github.com/mathieulongtin/fa2efceb7b546cbb6626ee899e2cfa0b


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接