我所说的“耐用”是指服务器随时可能崩溃,只要磁盘完好无损,就不会丢失数据(请参阅 )。似乎这就是日志模式的用途,但是如果启用日志功能,这是否违背了对内存数据进行操作的目的?读取操作可能不会受到日志的影响,但日志似乎会降低写入性能。

有帮助吗?

解决方案

Redis 不是 通常 部署为“持久”数据存储(在 ACID 中的“D”的意义上),甚至带有日志功能。大多数用例都会故意牺牲一点耐用性来换取速度。

然而,“仅附加文件”存储模式可以选择性地配置为以持久的方式操作,但以性能为代价。它将必须支付 fsync() 每次修改。要配置此功能,请在 .conf 文件中设置以下两个选项:

 appendonly yes
 appendfsync always

来自文档: 仅附加文件的耐用性如何?

检查redis.conf,您可以配置磁盘上的redis will fsync()数据。有以下三种选择:

  • 每当将新命令附加到附加日志文件时,fsync()。非常非常慢,非常安全。
  • fsync()每秒一次。足够快,如果发生灾难,您可能会损失1秒的数据。
  • Never Fync(),只需将数据放在操作系统手中即可。更快但更不安全的方法。

(请注意,Redis 2.0.0 后随带的配置文件中的appendfsync 的默认值是 everysec, , 并不是 always.)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top