【发布时间】:2012-05-14 19:35:06
【问题描述】:
我正在使用 Redis 为我在内存中存储的模型生成 ID。 Redis 客户端需要回调INCR 命令,这意味着代码看起来像
client.incr('foo', function(err, id) {
... continue on here
});
问题是,我已经编写了应用程序的另一部分,它希望 incr 调用是同步的并且只返回 ID,以便我可以像使用它一样
var id = client.incr('foo');
我遇到这个问题的原因是,到目前为止,我只是在内存中使用简单的闭包计数器函数生成 ID,比如
var counter = (function() {
var count = 0;
return function() {
return ++count;
}
})();
为了简化测试和一般设置。
这是否意味着我的应用在设计上存在缺陷,我需要重写它以期待在生成 ID 时出现回调?或者有什么简单的方法来同步调用?
【问题讨论】:
-
我认为它不会帮助你,但我已经看到 set 和 incr 不需要回调。 github.com/mranney/node_redis 搜索
"client.set("foo和client.incr("did a thing"); -
@MiaDiLorenzo 仅当您想忽略返回值时,您可以轻松地为
set执行此操作,但不适用于incr,您唯一真正想要的是递增值:) -
哦,好的,我现在明白了。否则,您将不得不单独编写一个确实需要回调的 get。
标签: node.js asynchronous redis