redis - 将交换的数据推回到 Redis 内存中

标签 redis

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

最佳答案

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

在转储数据库时,所有键及其内容都将由后台进程访问,因此操作系统必须将相应的内存分页。由于交换事件将生成大量 I/O,但它们只会阻塞后台线程。对为您的流量提供服务的主 Redis 进程影响很小(假设它不使用 AOF)。

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

关于redis - 将交换的数据推回到 Redis 内存中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17820505/

相关文章:

redis - 如何快速有效地删除 Redis 键

python - 你是如何一次性弹出redis中的所有值的

java - 用Java实现一致性哈希算法

redis - celery 和丢失的消息

java - redis消息多消费者情况下数据丢失

ruby-on-rails - redis 在 rails 中的使用,有多少使用两个?

linux - 在不使用 yum 的情况下在 AWS EC2 上安装 gcc?

node.js - 如何处理大量并发用户的插入/更新和计数器

caching - 如何清除Azure Redis缓存?

ruby-on-rails - 使用 rails app 启动 Juggernaut 和 Redis