120天后,我重新启动了Redis服务器。
重启前,内存使用量为29.5GB
重新启动后,内存使用量为27.5GB
那么,减少2GB的空间如何?
ram像本文https://redis.io/topics/memory-optimization
中的免费内存当按键被按下时,Redis不会总是向操作系统释放(返回)内存 删除。这与Redis没什么特别的,但是大多数 malloc()实现起作用。例如,如果您填充一个实例 包含5GB的数据,然后删除相当于2GB的数据, 居民集大小(也称为RSS),即 进程消耗的内存页面)可能仍然存在 5GB,即使Redis声称用户内存约为3GB。这个 之所以发生,是因为基础分配器无法轻松释放 记忆。例如,通常大多数已删除的密钥都分配在 与仍存在的其他键相同的页面。上一点 表示您需要根据峰值内存来配置内存 用法。如果您的工作量有时需要10GB,即使大多数 5GB可以做到的次数中,您需要准备10GB。
然而,分配器很聪明,能够重用免费的 内存,因此在您释放5GB数据集中的2GB后, 再次添加更多密钥,您将看到RSS(居民集大小)保持不变 稳定,并且不会增长更多,因为您最多可以添加2GB的其他密钥。 分配器基本上是在尝试重用2GB的内存 以前(逻辑上)已释放。
由于所有这些,当您使用时碎片率不可靠 的内存使用量在峰值处远远大于当前使用的 记忆。碎片计算为内存量 当前正在使用(作为由...执行的所有分配的总和 Redis)除以实际使用的物理内存(RSS值)。 由于RSS反映了峰值内存,因此(实际上)使用了 由于释放了许多键/值,因此内存不足,但是RSS是 高,则mem_used / RSS的比例将非常高。
还是我的Redis服务器使用的缓存的可用内存?
Redis是否使用缓存?缓存缓存?
谢谢!