为什么我的代码结果出乎意料?

时间:2014-03-01 12:34:48

标签: python transactions nosql redis

我正在阅读一本关于Redis(Redis在行动中)和第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:从未在其他任何地方使用')? 感谢

1 个答案:

答案 0 :(得分:0)

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