Redis事务
-
Redis事务不是很严格,操作指定有:
- multi :指示事务的开始
- exec:指示事务的执行
- discard:指示丢弃事务缓存队列中所有的指令
-
所有的指定在 exec 之前不执行,而是缓存在一个队列中,一旦受到exec指令,才开始执行整个事务队列,执行完毕后一次性返回所有指令的执行结果。
-
Redis事务可以保证隔离性,但是Redis事务一条执行失败后面的指令还会继续执行,不会进行回滚,所以不能说是原子性的。Redis事务会遇到两种错误:
- 事务在执行EXEC之前,入队的的命令可能会出错,或者内存不足。
- 在执行EXEC 调用之后,指令出错,比如列表命令用在了字符串上。
- 对于EXEC执行之前的错误,Redis会检查出来返回错误并放弃事务,但是对于在EXEC调用后执行失败的情况,其他命令仍会执行。
-
Redis为什么不支持回滚?
- Redis认为由于编程造成的错误应该在开发过程中被发现,不应该出现在生产环境中。
- Redis要保持简单快速。