2

我有一个 redis 实例,其中有大量数据已交换到磁盘。我已经设法从机器上释放了一堆内存,所以现在交换的所有东西都应该适合内存,没有任何问题。这样做以最大程度地减少性能问题或停机时间的最佳策略是什么?天真地,我猜想通读所有键会将所有内容都推入记忆中。似乎我也可以将数据库转储到磁盘,杀死 redis 服务器,然后重新打开它。有没有更好的方法,无论是使用 redis 还是使用 Linux 中的内存工具?

4

1 回答 1

2

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

在转储数据库时,所有的键及其内容都将被后台进程访问,因此操作系统必须将相应的内存分页。由于交换活动会产生很多 I/O,但它们只会阻塞后台线程。对服务于您的流量的主 Redis 进程几乎没有影响(前提是它不使用 AOF)。

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

于 2013-07-24T10:45:30.063 回答