1

我看到了许多与我提出的问题类似的问题。他们中的一些人说可以轮询,这不会显着影响数据库性能,有些人仍然没有得到答复。我想知道的是:

  • 我可以做一些类似于 ASP.NET 的 sqldependency 的事情,它有助于找出何时对数据库进行了更改而无需轮询。
  • 我知道轮询是可以的,可能不会影响数据库性能,但我需要在更新后立即知道更新,所以我觉得我需要比仅仅每 1 秒轮询一次更好的东西。
  • 作为附加点,在服务器上检测到的更新必须被推送(Ajax 推送 - 我正在使用 Ajax 推送引擎)到订阅特定频道的所有客户端。

谢谢和问候, Thothathri Srinivasan

4

4 回答 4

3

Redis 发布订阅

我希望触发器可以帮助你,但经过一番检查后,我(高度)怀疑。

您可以使用Redis pubsub实现您的目标。Redis 是一个速度极快的数据结构服务器。将数据库更改发布到频道,并让感兴趣的客户通过订阅同一频道(实时)检测更改。

下载/安装Redis 非常简单,作为额外奖励,您还将“获得一个开源的高级键值存储。它通常被称为数据结构服务器,因为键可以包含字符串、散列、列表、集合和排序集合。”

安装它可能是最好的方法,但如果你不能,你可以使用免费的http://redistogo.com计划与 Redis 服务器通信,但限制是你只能获得 5MB 来存储数据并且它将不会被持久化到光盘上。

于 2011-06-27T22:20:29.383 回答
0

我喜欢 Alfred 的 pubsub 想法。我会将数据库视为插入事件的订阅者,而不是规范版本。也许这对于您现有的代码库是不可能的。您可能还可以监控数据库服务器上的二进制日志,以观察变化并将此信息推送给订阅者。

于 2011-06-28T01:49:00.007 回答
0

我认为 Q4M 正是您想要的 http://q4m.github.com/tutorial.html

于 2011-12-06T06:54:59.050 回答
0

您可以将服务器推送与 websockets 或 comet 等实现一起使用。

于 2011-06-27T21:44:13.017 回答