Php Laravel队列-替换大量小mysql更新

Php Laravel队列-替换大量小mysql更新,php,mysql,caching,laravel,increment,Php,Mysql,Caching,Laravel,Increment,我定期运行以下相当常见的MySQL更新: UPDATE content SET views = views+1 WHERE id = xxx 这种情况发生在大多数主要页面上,内容可以是任何内容,如文章、论坛主题、下载、视频等,你可以看出这只是增加了该内容的浏览次数 为了避免在每个页面上进行更新,我考虑使用队列 但是,我需要做的不是将每个更新排队,而是增加队列中的计数。最好的方法是什么 例如,我不能这样做: Queue::push('incrementCount', array('content

我定期运行以下相当常见的MySQL更新:

UPDATE content SET views = views+1 WHERE id = xxx
这种情况发生在大多数主要页面上,内容可以是任何内容,如文章、论坛主题、下载、视频等,你可以看出这只是增加了该内容的浏览次数

为了避免在每个页面上进行更新,我考虑使用队列

但是,我需要做的不是将每个更新排队,而是增加队列中的计数。最好的方法是什么

例如,我不能这样做:

Queue::push('incrementCount', array('content' => $content));
因为它最终还是会进行1000次单独的更新。我需要一个地方来保存它被浏览的次数,然后每小时或者每15分钟更新一次


我曾考虑过使用APC缓存,但我担心这很危险,因为缓存可能会丢失,这正是缓存,不应依赖于它来存储重要数据。

我不认为通过队列单独更新每个项目有什么问题-有什么特别的原因您不想这样做吗?我在慢速查询日志中看到了很多查询,因为它发生得如此频繁,所以我认为有太多的查询碰到了问题同一排。做更新的守护进程会比用户好得多吗?真奇怪。。。该查询的执行速度应该不会太慢,我预计不到100毫秒。您的示例是整个查询,还是有其他子句WHERE、ORDER BY等?此外,若您的内容表经常更改,若您有一段时间并没有更改,则可能需要运行优化表。使用队列侦听器不会提高查询执行的速度,但至少在查询运行时不会阻塞页面加载,从这个意义上说,这样做肯定会更好。也可以使用UPDATE LOW_PRIORITY进行此操作,这样在执行时就不会阻塞任何其他查询。