【问题标题】:Storing data temporarily before inserting into MySQL在插入 MySQL 之前临时存储数据
【发布时间】:2014-01-16 14:59:02
【问题描述】:

在我的 PHP 站点上,我每 10 秒向服务器发送一次 AJAX 请求,然后执行以下操作:

update users set points = points + 1 where id = 5

问题是有很多 MySQL 更新,它正在杀死我的服务器。

我想将积分临时存储在某处,当为用户累积 100 分时,我将更新用户表。所以 1 个插入而不是 100 个插入。

我应该如何临时存储数据?

要求: - 大量更新 - 存储至少 500MB 数据(如果存储在内存中,我有足够的内存) - (可选)如果可能的话,数据应该在服务器重启后存在

memcached 适合这个吗? (大量更新)

有没有类似 memcached 的东西,但可以选择将数据写入磁盘并在我重新启动服务器时恢复它?

APCu 或 MongoDB 或 NoSQL 数据库会更好吗?

【问题讨论】:

  • 你有users(id)的索引吗?
  • 是的,我有索引。它是一个 InnoDB 表。

标签: php mysql caching nosql memcached


【解决方案1】:

看看Redis。它可能会轻松解决您的问题。

它是一个类似于 memcached 的键值存储。我发现它更适合我的需求。它有Atomic Increments 可以解决您的确切问题。

如果我是对的,它也可以将数据保存到磁盘。

【讨论】:

  • “好多了”是相当主观的。
猜你喜欢
  • 1970-01-01
  • 2022-01-24
  • 2011-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-18
相关资源
最近更新 更多