目录
56.Redis事务中watch是如何监视实现的?
Redis使用watch命令来决定事务是继续执行还是回滚,那就需要在multi之前使用watch来监视某些键值对,然后使用multi命令来开启事务,执行对数据结构操作的各种命令,此时这些命令入队列。
当使用exec执行事务时,首先会比对watch所监控的键值对,如果没发生改变,它会执行事务 队列中的命令,提交事务;如果发生变化,将不会执行事务中的任何命令,同时事务回滚。当然无论如何是否回滚,Redis都会取消执行事务前的watch命令。
57.为什么Redis不支持回滚?
以下是这种做法的优点:
Redis命令只会因为错误的语法而失败(并且这些问题不能在入队列时发现),或是命令用在了错误类型的键上面:
这就是说,从实用性的角度来说,失败的命令是由编程错误造成的,而这些错误应该在开发的过程中被发现,而不应该出现在生产环境中。
因为不需要对回滚进行支持,所以Redis的内部可以保持简单且快速。
有种观点认为Redis处理事