0

2 番目の multi() 呼び出しには、最初の multi() の結果が必要です。ただし、両方の multi() からのすべてのコマンドをアトミ​​ックに実行したいと考えています。これどうやってするの?

これは node.js クライアントを使用しています。

db.multi()
    .incr('next:user:id')
    .sadd('users:facebookid', facebookId)
    .exec(function(err, replies)
    {
        var newUserId = replies[0];
        // if something fails in this multi(), then the previous multi() shouldn't be executed either.
        db.multi()
        .hmset('user:' + newUserId , 'facebookId', facebookId, 'name', userName)
        .incr('users:count')
        .exec()

    });
4

1 に答える 1

1

アトミック トランザクションで複雑な作業を行うには、 redis EVALを使用できるはずです。私の理解では、EVAL コマンドは tx ログに書き込まれるため、redis がクラッシュした場合でも、コマンド全体が最後まで実行されるか、まったく実行されません。

于 2012-11-01T22:32:34.450 に答える