使用Redis AOF fsync每次写入与MYSQL myism db性能

时间:2011-12-26 07:34:40

标签: mysql redis

我有一个需要玩家点击轮次的游戏。必须在文件中保存每轮数据。目前,我们正在使用mysql数据库来保存数据。我想用redis来优化它。是不是redis AOF fsync写的这种可靠性和性能都比mysql好。

1 个答案:

答案 0 :(得分:1)

您可能需要阅读the Redis persistency pagehigh latency troubleshooting page

MyISAM引擎不提供任何重做日志记录机制。所以它很快,但不可靠。任何系统崩溃都会导致数据文件中的潜在损坏,必须在恢复服务之前进行修复。

每次写入时使用AOF + fsync的Redis将提供更好的可靠性,但代价是性能和可扩展性。 HDD的Fsync操作非常昂贵。 Redis尝试使用一种组提交来优化它们(即在事件循环迭代期间对几个写操作进行批处理),但是,当fsync完成时,整个Redis事件循环被冻结。

您可以通过使用其他选项(例如appendonly everysec)来放松此行为。在此模式下,如果系统崩溃,您可以放弃写入流量的最后一秒,但在重新启动Redis之前无需修复任何内容。此模式下的性能要好得多,因为fsync主要在后台完成。

IMO,如果你需要绝对的耐久性(但对于我怀疑它的游戏),你会更好地使用具有最大安全选项的真正OLTP引擎(例如:InnoDB与innodb_flush_log_at_trx_commit设置为1)。