redis是一个持久的数据存储区吗?

时间:2010-03-15 19:43:38

标签: database redis

“持久”我的意思是,服务器可以随时崩溃,只要磁盘保持完好,就不会丢失任何数据(参见ACID)。似乎这就是日记模式的用途,但是如果启用日记功能,那么这是否会破坏内存数据操作的目的?阅读操作可能不受日记功能的影响,但似乎日志记录会破坏您的写入性能。

1 个答案:

答案 0 :(得分:53)

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 2.0.0版附带的配置文件中的appendfsync默认值为everysec,而不是always。)