一尘不染

Redis是持久数据存储区吗?

redis

我所说的“耐用”是指服务器可以随时崩溃,只要磁盘保持完好无损,就不会丢失任何数据(请参阅ACID)。好像这就是日记模式的用途,但是如果启用日记功能,这是否会破坏对内存数据进行操作的目的?读操作可能不受日记影响,但是日记似乎会破坏您的写入性能。


阅读 236

收藏
2020-06-20

共1个答案

一尘不染

即使使用日志记录,Redis 通常 也不会部署为“耐用”数据存储(在ACID中为“ D”的含义)。大多数用例有意牺牲一些耐用性以换取速度。

但是,“仅附加文件”存储模式可以有选择地配置为以性能为代价以持久方式运行。在每次修改时,都必须为fsync()付费。要配置它,请在.conf文件中设置以下两个选项:

 appendonly yes
 appendfsync always

从文档:仅附加文件有多持久?

检查redis.conf,您可以配置Redis将fsync()磁盘上的数据进行多少次。共有三个选项:

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

(请注意,Redis 2.0.0附带的配置文件中appendfsync的默认值为everysec,而不是always。)

2020-06-20