Redis提供了一定的事务支持,可以保证一组操作原子执行不被打断,但是如果执行中错误,事务不能回滚

    1. 127.0.0.1:6379> multi
    2. OK
    3. 127.0.0.1:6379> set a 100
    4. QUEUED
    5. 127.0.0.1:6379> set b 200
    6. QUEUED
    7. 127.0.0.1:6379> get a
    8. QUEUED
    9. 127.0.0.1:6379> get b
    10. QUEUED
    11. 127.0.0.1:6379> exec
    12. 1) OK
    13. 2) OK
    14. 3) "100"
    15. 4) "200"

    如果事务中出现了错误,事务并不会终止执行,而是只会记录下这条错误的信息,并继续执行后面的指令。
    所以事务中出错不会影响后续指令的执行。

    在Redis的Python 客户端库redis-py中,提供了pipeline (称为流水线 或 管道),该工具的作用是:

    • 在客户端统一收集操作指令
    • 补充上multi和exec指令,当作一个事务发送到redis服务器执行
      1. from redis import StrictRedis
      2. r = StrictRedis.from_url('redis://127.0.0.1:6381/0')
      3. pl = r.pipeline()
      4. pl.set('a', 100)
      5. pl.set('b', 200)
      6. pl.get('a')
      7. pl.get('b')
      8. ret = pl.execute()
      9. print(ret) # [True, True, b'100', b'200']