Redis 的事务机制是怎样的?
Redis 的事务机制
Redis支持事务机制,其主要目的是确保多个命令执行的原子性,即这些命令会作为一个不可分割的操作单元执行。
需要注意的是,Redis事务不支持回滚操作。从Redis 2.6.5版本开始,服务器会在命令累积阶段检测错误。在执行EXEC命令时,若发现错误则会拒绝执行事务并返回错误信息,同时丢弃该事务。当事务执行过程中发生错误时,Redis会继续执行剩余命令而非回滚整个事务。
对于EXEC之后发生的错误,Redis不会特殊处理:即使事务中有命令执行失败,其他命令仍会继续执行。
参考官方文档:
https://redis.io/docs/latest/develop/using-commands/transactions/
关于原子性的补充说明
Lua脚本的原子性具有双重特性:在并发层面保证执行的不可分割性(原子性),但在数据库层面不满足ACID原子性(不保证操作全部成功或回滚)。Lua作为一种高效、轻量级的跨平台脚本语言,适合嵌入应用程序扩展功能。虽然在单机Redis中能实现原子操作,但在集群环境下存在使用限制。
参考: