【发布时间】:2014-09-23 18:19:14
【问题描述】:
我想制作一个基于集群的 NodeJS 脚本,它有 8 个或更多工作人员。该脚本在独立时使用SetTimeout,并且计时器内部存储在 NodeJS 脚本中。现在我必须对此做点什么,我想也许我可以使用 redis 过期并以某种方式在密钥过期时从 redis 调用一个函数?
谁能给我一个小例子吗?还有一个问题:这有多可靠?
【问题讨论】:
我想制作一个基于集群的 NodeJS 脚本,它有 8 个或更多工作人员。该脚本在独立时使用SetTimeout,并且计时器内部存储在 NodeJS 脚本中。现在我必须对此做点什么,我想也许我可以使用 redis 过期并以某种方式在密钥过期时从 redis 调用一个函数?
谁能给我一个小例子吗?还有一个问题:这有多可靠?
【问题讨论】:
如果您使用的是 Redis 2.8.0+,则有 keyspace notifications。这些使用 Redis 中现有的 pubsub 机制,因此您可以简单地订阅这些各种通知。
您确实需要确保启用这些通知,因为默认情况下它们是禁用的。您可以通过更改您的 redis.conf 配置文件来实现此目的,以获得永久解决方案,或者您可以通过 Redis CLI 使用 CONFIG SET notify-keyspace-events EKx 之类的内容临时启用它。您也可以从 redis 模块启用它,例如:
client.config('set', 'notify-keyspace-events', 'EKx', function(err) {
if (err) throw err;
});
【讨论】: