rob*_*007 6 transactions redis node.js
是否有可能使用multi.incr(value)与multi.hmset?
我的意思是:
var name = 'Josh';
var multi = client.multi();
multi.incr('id'); // incr => 1
multi.hmset('user:' + <need incr value here>, 'username', name);
// I want multi.hmset('user:1', 'username', 'Josh');
multi.exec(function(err,data){ .. });
Run Code Online (Sandbox Code Playgroud)
我的目标是增加'id',然后将其设置为事务中的用户ID.我已经读过,我需要做client.watch('id'),但我不明白如何使用它.
PD:请用代码发布你的答案,这是最好的方法:)
Ben*_*ied 18
上面接受的答案是不必要的复杂.在这种情况下,您无需使用多人或手表.INCR已经是原子的,专为这种情况而设计.编辑:感谢Itamar Haber&robe007让接受的答案改变了.:)
你可以这样做:
var name = 'Josh';
client.incr('id', function(err, id) {
client.hmset('user:' + id, 'username', name);
});
Run Code Online (Sandbox Code Playgroud)
通过执行上述操作,INCR会自动锁定"id"键,为您递增,解锁并返回给您.因此,任何人都无法使用上面的代码获得重复的用户ID.与WATCH/GET不同,它还具有永远不会失败的好处,您必须检查失败并在失败时再次运行查询.
| 归档时间: |
|
| 查看次数: |
5320 次 |
| 最近记录: |