【问题标题】:Is redis a durable datastore?redis 是持久数据存储吗?
【发布时间】:2011-01-27 20:14:10
【问题描述】:

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

【问题讨论】:

  • 你不能同时拥有它。要么某些数据处于不确定状态,要么您必须等待所有数据都写入磁盘。
  • 这正是我问这个问题的原因。

标签: database redis


【解决方案1】:

Redis 不通常部署为“持久”数据存储(在 ACID 中的“D”的意义上),即使使用日志也是如此。大多数用例故意牺牲一点耐用性来换取速度。

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

 appendonly yes
 appendfsync always

来自文档:How durable is the append only file?

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

  • Fsync() 每次执行新命令时 附加到附加日志文件。非常 很慢,很安全。
  • Fsync() 一次 每一秒。足够快,你可以 如果有 1 秒的数据丢失 灾难。
  • 从不使用 fsync(),只需将您的 运营商手中的数据 系统。更快、更不安全的方法。

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

【讨论】:

  • 很高兴知道。你能提供一个链接来支持你所说的吗?
  • @FrankFarmer 我编辑了一些答案,因为它包含有关配置默认值的过时信息,并且还通过以“否”开头来“掩盖标题”。随时改进我的改进。 :-)
  • @HostileFork 鉴于您所做的重大更改,我认为您最好提交自己的答案。已经足够长的时间了,当然欢迎新的观点
  • @FrankFarmer 它需要很长时间才能到达页面顶部!重点是这作为最高条目出现,这是谷歌上 Redis 上耐久性的最高搜索。因此,如果您对编辑感到满意,我很高兴...
猜你喜欢
  • 2017-06-16
  • 2012-04-15
  • 2020-06-19
  • 1970-01-01
  • 2014-12-14
  • 1970-01-01
  • 2017-11-28
  • 1970-01-01
  • 2011-01-03
相关资源
最近更新 更多