无需轮询即可订阅 MySQL 数据库中的更改

Subscribe to changes in MySQL database without polling

我有一个 MySQL 数据库,该数据库由另一个应用程序更新,我想从我的 node.js 服务器订阅更改。是否可以在不长时间轮询所有 rows/columns 以获取其值的任何更改的情况下监视数据库的任何更新?

我看到的一个潜在解决方案是使用 redis 订阅数据库以侦听任何更改,然后通知我的客户端(在这种情况下将是我的服务器)。如果可能的话,如何将 Redis 订阅到 MySQL 数据库?

您能不能只在表格中添加一个 updated 列?

您可以在该列上添加 ON UPDATE CURRENT_TIMESTAMP,这将在每次更新该行时自动存储当前时间。该规则适用于数据库本身,因此您无需更新任何其他使用该数据库的客户端,它会自动运行。

然后任何客户端都可以根据上次检查更新的时间进行查询。您只需要 SELECT 行基于其 updated 字段。

您只用这种方式检查一列,而且查询速度相当快。

您也可以为日期时间字段编制索引,apperently。这可能会使查询确实非常快。