Pipeline和事务 - SeeMoonUp/EfftiveRedis GitHub Wiki

Pipeline和事务 区别 事务: 熟悉关系型数据库的读者应该对事务比较了解,简单地说,事务表示一组动作,要么全部执行,要么全部不执行。例如在社交网站上用户A关注了用户B,那么需要在用户A的关注表中加入用户B,并且在用户B的粉丝表中添加用户A,这两个行为要么全部执行,要么全部不执行,否则会出现数据不一致的情况。

redis事务:

  • multi:表示事务的开始
  • exec:表示事务命令执行
  • discard:表示事务废弃/回滚

redis事务命令错误的处理机制:

  1. 命令错误 比如set写成sett 事务会终止,现象为全部不执行
  2. 命令执行错误 比如incr字符串 事务不会终止,错误的命令执行失败,其他命令可正常执行。相当于不支持回滚操作。

redis事务和watch命令

有些应用场景需要在事务之前,确保事务中的key没有被其他客户端修改过,才执行事务,否则不执行(类似乐观锁)。 Redis提供了watch命令来解决这类问题,可以用watch来实现乐观锁的作用。