”redis设计之初是简单高效,所以说在事务操作时命令是不会出错的,出错的可能性就是程序的问题“ 那这样的意思就是把锅抛给程序咯? 如果程序能保证百分之百不出错那么关系型数据库还要啥事务呢? redis事务报错时仍会执行所有命令,这样怎么保证一致性呢? 或者说白了redis根本就不支持事务只是冠以事务的名号而已。以上纯属个人见解 又专业人士可以解释大家讨论。
Redis事务主要用于不间断执行多条命令,即是存在引发错误的命令。Redis先执行命令,命令执行成功后才会记录日志,所以出现错误时无法回滚。支持完整的acid会让Redis变得复杂也可能导致性能较低。
此外,使用lua脚本也可以保证Redis不间断执行多条命令。
Redis 会在收到客户端修改指令后,先进行参数校验,如果没问题,就立即将该指令文
本存储到 AOF 日志中,也就是先存到磁盘,然后再执行指令。
<p>找到网上这个解释比较到位:</p>
单个 Redis 命令的执行是原子性的,但 Redis 没有在事务上增加任何维持原子性的机制,所以 Redis 事务的执行并不是原子性的。
事务可以理解为一个打包的批量执行脚本,但批量指令并非原子化的操作,中间某条指令的失败不会导致前面已做指令的回滚,也不会造成后续的指令不做。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。