Redis数据库文件(dump.rdb)在删除95%的键后不会缩小。

3

使用DEL命令删除的键超过95%。

在保存和bgsave后,数据库转储文件与删除前相同。

我还注意到内存(used_memory_human:160.96M)仍然像之前一样高。我只剩下7669个键。

键空间

db1:keys=7669,expires=145,avg_ttl=13314857

如何在删除键后压缩内存和数据库?

2个回答

2

RDB文件的大小和used_memory代表Redis中实际数据的大小。这意味着剩余的7669个键占据了这些空间 - 不管是一个大键藏在其中,还是几个大键,或者所有键都大约为0.05MB。


我被怀疑是因为在删除之前和之后,内存和数据库大小没有发生变化。所有记录的键/值都是相同的对象。删除之前

内存 used_memory:168782256

used_memory_human:160.96M

键空间 db1:keys=49487,expires=0,avg_ttl=0

删除之后

db1:keys=7669,expires=145,avg_ttl=13314857
- Reza Shahbazi
当你加载RDB回来时会发生什么? - Itamar Haber
当我重新加载RDB时,它显示我有7669个键,但内存大小和数据库保存在此之前或之后都没有缩小。当我运行SAVEBGSAVE时,RDB转储文件的大小几乎与删除之前的原始数据库大小相同。 - Reza Shahbazi
我已经在Golang中解决了我的删除问题。 - Reza Shahbazi
运行redis-cli --big-keysredis-rdb-tools来了解你的数据库中有什么内容-虽然你在这个代码片段中使用了很好的Go代码(尽管你使用了邪恶KEYS命令-要小心!),但它并没有提到数据库中剩下的键的情况。 - Itamar Haber

0

听起来你想找出在你的数据库中占用最多内存的键。

这个命令可能会对你有帮助:

redis-cli -h 主机名 -p 端口号 --bigkeys

如果你使用默认的主机和端口号,可以使用 redis-cli --bigkeys

它会遍历整个数据库,并报告找到的最大的键。对于拥有许多键的大型数据库来说,这可能需要一些时间,但是对于8k个键,它应该非常快速运行。


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