【问题标题】:Why the results of my code are unexpected?为什么我的代码结果出乎意料?
【发布时间】:2014-04-02 14:13:57
【问题描述】:

我正在阅读一本关于 Redis 的书(Redis in action),第 59-60 页。有一个用于事务的示例如下:

def trans(conn): pipeline = conn.pipeline() pipeline.incr('trans:') time.sleep(.1) pipeline.incr('trans:',-1) print pipeline.execute()[0] def run_transaction(conn): if 1: for i in xrange(3): threading.Thread(target=trans, args =(conn,)).start() time.sleep(.5)

我希望这会产生:

0

0

0

但是输出是:

1

1

1

有人可以解释为什么('trans: 从未在其他任何地方使用')吗? 谢谢

【问题讨论】:

    标签: python transactions nosql redis


    【解决方案1】:

    'pipeline.execute()' 的结果是一个包含 2 个元素的数组。第一个是'pipeline.incr('trans:')'的结果,第二个是'pipeline.incr('trans:',-1)'的结果。在你的情况下输出是正确的。

    【讨论】:

      猜你喜欢
      • 2011-11-24
      • 2022-08-02
      • 1970-01-01
      • 2020-09-26
      • 2021-03-25
      • 1970-01-01
      • 2016-09-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多