Pipeline和事务 - SeeMoonUp/EfftiveRedis GitHub Wiki
Pipeline和事务 区别 事务: 熟悉关系型数据库的读者应该对事务比较了解,简单地说,事务表示一组动作,要么全部执行,要么全部不执行。例如在社交网站上用户A关注了用户B,那么需要在用户A的关注表中加入用户B,并且在用户B的粉丝表中添加用户A,这两个行为要么全部执行,要么全部不执行,否则会出现数据不一致的情况。
redis事务:
- multi:表示事务的开始
- exec:表示事务命令执行
- discard:表示事务废弃/回滚
redis事务命令错误的处理机制:
- 命令错误 比如set写成sett 事务会终止,现象为全部不执行
- 命令执行错误 比如incr字符串 事务不会终止,错误的命令执行失败,其他命令可正常执行。相当于不支持回滚操作。
redis事务和watch命令
有些应用场景需要在事务之前,确保事务中的key没有被其他客户端修改过,才执行事务,否则不执行(类似乐观锁)。 Redis提供了watch命令来解决这类问题,可以用watch来实现乐观锁的作用。