"持久"我的意思是,服务器可以随时崩溃,只要磁盘保持完好,就不会丢失任何数据(参见ACID).似乎这就是日记模式的用途,但是如果启用日记功能,那么这是否会破坏内存数据操作的目的?阅读操作可能不受日记功能的影响,但似乎日志记录会破坏您的写入性能.
Redis 通常不被部署为"持久"数据存储区(在ACID中的"D"意义上),即使是日志记录也是如此.大多数用例故意牺牲一点耐久性以换取速度.
然而,"仅附加文件"存储模式可以可选地配置为以耐用的方式操作,但代价是性能.它必须为每次修改支付fsync().要配置它,请在.conf文件中设置以下两个选项:
appendonly yes appendfsync always
来自文档:仅附加文件的持久性如何?
检查redis.conf,您可以配置Redis在磁盘上fsync()数据的次数.有三种选择:
每次将新命令附加到追加日志文件时,都会执行Fsync().非常非常慢,非常安全.
Fsync()每秒一次.足够快,如果发生灾难,您可能会丢失1秒的数据.
永远不要fsync(),只需将数据放在操作系统的手中.更快更方便的方法.
(请注意,配置文件中附带的Redis 2.0.0版附带的appendfsync的默认设置是everysec
,而不是always
.)