2016-12-06 14 views
3

MULTIEXECを使ってトランザクションで複数のredisコマンドを実行したいので、何か不具合が起きた場合はDISCARDすることができます。go-redis/redisパッケージを使用してGoでRedis Transactionを作成するにはどうすればいいですか?

go-redis/redisパッケージを使用してredisトランザクションを実行する方法の例を探していて、何も見つかりませんでした。

また、ドキュメントhereを調べて、私はそのパッケージを使ってredisトランザクションlike this for exampleを実行する方法に何も関係しません。あるいは、ドキュメントから何かを逃しているかもしれません。なぜなら、godocはパッケージ内のすべての関数を主に1つのライナーでしか説明していないからです。

他のGo Redisライブラリを使ってredisトランザクションを行う例がありましたが、別のライブラリを使ってアプリケーション全体を移植するためには、別のライブラリを使用するようにプログラムを変更しません。

go-redis/redisパッケージを使用して誰でも手伝ってもらえますか?

ありがとうございます。

+0

トランザクションを使用するときは、(https://godoc.org/gopkg.in/redis.v5#Tx)[送信]を呼び出しているトランザクションのTx値を取得 – JimB

+0

私はそれを知っています。どのようにtxオブジェクトを作成するには? tx – Kebeng

答えて

1

あなたは、そのパッケージにClient.Watch

err := client.Watch(func(tx *redis.Tx) error { 
    n, err := tx.Get(key).Int64() 
    if err != nil && err != redis.Nil { 
     return err 
    } 

    _, err = tx.Pipelined(func(pipe *redis.Pipeline) error { 
     pipe.Set(key, strconv.FormatInt(n+1, 10), 0) 
     return nil 
    }) 
    return err 
}, key) 
+0

を返す関数が見つかりませんでした Txは 'Watch'関数内の無名関数のparamです。それが私がそれを見逃す理由です。 thanks man。 – Kebeng

関連する問題