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

标签 mysql redis

我有一款游戏需要玩家点击回合。必须在文件中保存每轮数据。目前,我们正在使用mysql数据库来保存数据。我想通过使用 redis 来优化它。 redis AOF fsync per write 是否比 mysql 具有更高的可靠性和更好的性能。

最佳答案

您可能想阅读 the Redis persistency pagehigh latency troubleshooting page .

MyISAM 引擎不提供任何重做日志记录机制。所以它相当快,但不可靠。任何系统崩溃都可能导致数据文件损坏,必须先修复这些文件才能恢复服务。

具有 AOF + fsync per write 的 Redis 将提供更好的可靠性,但以性能和可扩展性为代价。 HDD 的 Fsync 操作非常昂贵。 Redis 尝试通过使用组提交的形式来优化它们(即在事件循环迭代期间批处理多个写入操作),但是当 fsync 完成时,整个 Redis 事件循环仍然被卡住。

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

IMO,如果您需要绝对持久性(但对于游戏我对此表示怀疑),您最好使用具有最大安全选项的真正 OLTP 引擎(例如:将 innodb_flush_log_at_trx_commit 设置为 1 的 InnoDB)。

关于mysql - 每次写入使用 Redis AOF fsync 与 MYSQL myism db 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8633834/

相关文章:

node.js - Node redis 报告 "EXEC without MULT"

ruby-on-rails - 集群中的 Sidekiq 作业

amazon-web-services - 使用 Terraform 缩小 AWS 上的 Redis 缓存集群

playframework - redis 的 play-plugin Unresolved sedis 依赖性

php - 将数据保存到数据库后隐藏按钮

php - ZF2 Query remove table name in column 函数

mysql - 搜索某个日期是否在事件中

redis - 具有自动增量键的 Spring Data + Redis

mysql - 从存储过程内的更新语句获取结果

javascript - 当用户点击链接时插入 MySQL 数据库