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