【问题标题】:should I check error each step on a redis multi transaction?我应该在 redis 多事务的每个步骤中检查错误吗?
【发布时间】:2018-07-25 06:36:15
【问题描述】:

我应该在 redis 多事务的每个步骤中检查错误吗?如果发生错误,是不是说release命令也会返回错误?

例如。我可以:

 conn.Do("multi")
 conn.Do("set", "mm", "xx")
 reply, err := conn.Do("exec")
 if err != nil {
      ....
  }

或者,我应该:

  _, err := conn.Do("multi")
 if err != nil {
     ....
     return
 }
_, err := conn.Do("set", "mm", "xx")
if err != nil {
     ....
    return
 }
 reply, err := conn.Do("exec")
if err != nil {
    ....
   return
 }

【问题讨论】:

  • 取决于connDo方法的实现。
  • 最好不要忽略错误。但是如果你不想每次都写这段代码sn -p。创建一个函数来检查错误。
  • 在这种情况下你不能创建辅助函数来检查错误,因为如果有错误你仍然需要返回。

标签: go redis redigo


【解决方案1】:

要进行交易,您需要Send() 每个命令,并且只需要Do() EXEC。应该只对Do() 进行错误检查,如下所示:

conn.Send("MULTI")
conn.Send("SET", "foo", "bar")
...
reply, err := conn.Do("EXEC")
if err != nil {
    ...
}
...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-27
    • 1970-01-01
    • 2013-02-07
    • 2021-10-24
    • 2023-02-16
    • 2018-02-24
    • 2017-07-09
    相关资源
    最近更新 更多