在Redis中将交换的数据推回内存

时间:2013-07-23 20:33:11

标签: redis

我有一个redis实例,其中包含大量已交换到磁盘的数据。我已经设法从机器中释放了大量内存,因此所有交换的内容都应该适合内存而不会出现任何问题。这样做的最佳策略是什么,以最大限度地减少性能问题或停机时间?天真地,我猜想通过所有键读取会将所有内容都推入内存中。好像我也可以将db转储到磁盘,杀死redis-server,然后重新打开它。有没有更好的方法,无论是使用redis还是使用Linux中的内存工具?

1 个答案:

答案 0 :(得分:2)

假设操作系统已经将Redis内存的一部分分页(即您没有使用旧Redis版本的弃用虚拟内存功能),那么强制执行所有要访问的数据的最简单方法就是转储数据库(通过使用BGSAVE)。

在转储数据库时,后台进程将访问所有密钥及其内容,因此操作系统必须将相应的内存分页。由于交换活动,将生成大量I / O,但是将仅阻止后台线程。对为您的流量提供服务的主要Redis流程几乎没有影响(前提是它不使用AOF)。

您不必重新启动Redis,简单的后台保存就足够了。