【发布时间】:2014-03-28 06:23:28
【问题描述】:
我正在使用 redis 并在特定时间间隔内将数据保存到磁盘。我看到通常 redis 读写时间是 0.2 毫秒,但我看到很少有 30 毫秒的时间。我读了redis分叉一个后台进程来将数据写入磁盘,分叉发生在服务读写请求的同一个(redis使用单线程服务所有请求)线程上。 如果这是真的,我想要一个解决方案,这样持久性不会增加读写请求的延迟。
【问题讨论】:
我正在使用 redis 并在特定时间间隔内将数据保存到磁盘。我看到通常 redis 读写时间是 0.2 毫秒,但我看到很少有 30 毫秒的时间。我读了redis分叉一个后台进程来将数据写入磁盘,分叉发生在服务读写请求的同一个(redis使用单线程服务所有请求)线程上。 如果这是真的,我想要一个解决方案,这样持久性不会增加读写请求的延迟。
【问题讨论】:
如果您发出BGSAVE,后台保存将分叉。操作系统当然需要有一个可用的惰性独立 CPU 线程,以免影响 Redis-server 的主线程。如果你在redis.conf中配置save,一个BGSAVE基本上就是这样。我会将其配置为关闭并在故障排除时手动发出 BGSAVE。
如果您发出SAVE,保存将是同步的,其他客户端将不得不等待。
另见here。您可能希望完全跳过 rdb 快照,并依赖 AOF。
另请参阅我对敏感数据的评论:SO comment。有很多方法可以确保您的数据安全。磁盘持久化只是其中之一。
希望这有帮助,TW
【讨论】: