通知:即日起,禁止携带Note 7登机,且不得作为航空货物托运或承运
06-17
事务的定义事务是一组具有原子操作的命令。在这组命令中,要么全部执行成功,要么全部执行失败。
事务的特点:原子性。原子性是指事务操作具有原子操作。
事务中的 SQL 操作必须全部成功或全部失败。有些 SQL 操作无法成功,有些 SQL 操作失败。
隔离。隔离性是指多个事务之间相互隔离,事务之间互不影响。
坚持。持久性是指事务一旦提交,就无法回滚(撤回),并且永久保存在磁盘上。
一致性。一致性是指事务操作前后必须满足业务约束。
事务四大特性的详细解释请参考文章 multiOK.0.0.1:> set user:id:1 1QUEUED.0.0.1:> exec1) OK 事务执行 exec 命令返回命令数量交易中执行的内容以及相应的结果。客户端2:负责读取缓存中的数据。
代码语言: javascript copy # 客户端执行set之后,执行exec之前。 .0.0.1:> get user:id:1(nil)# 客户端执行exec后。
.0.0.1:> get user:id:1 "1" watch 监听按键。客户端1:负责启动交易并使用watch来监控密钥。
代码语言:javascript copy#在监听key之前检查value.0.0.1:> getage"1"#开始监听.0.0.1:>watchageOK#开始交易.0.0.1:>multiOK#修改监听key value .0.0.1:> set Age 2QUEUED#提交交易(发现返回nil,说明执行不成功。).0.0.1:> exec(nil)#重新获取监控的key value.0.0.1:> get Age "3" 客户端2:负责修改客户端1中监听的key 代码语言:javascript copy # 客户端执行watch命令后、启动事务后、提交前立即执行交易。
.0.0.1:> setage 3OK# 客户端执行exec命令后执行。 .0.0.1:> get Age "3" 通过2中的演示,你会发现在事务开始之前就对key进行了监听。
交易正常提交后,交易中被监控的key执行的命令将不会被执行。 unwatch 取消被监控键的监听事件。
此时的取消监听不能放在事务中,只能在事务开始之前取消该key的监听事件。事务命令异常处理事务原子性演示了命令错误的原子性。
代码语言:javascript copy.0.0.1:> multiOK.0.0.1:> set user:name zhangsanQUEUED.0.0.1:> set user:age 1QUEUED.0.0.1:> set user:sex maxQUEUED# 执行时出错命令操作.0.0.1:> 设置一个(错误) ERR 'set' 命令的参数数量错误# 提交事务.0.0.1:> exec(错误) EXECABORT 由于先前的错误而丢弃事务..0.0.1:> key *1) "user:id:1"2) "name"3) "age" 通过上面的演示,如果在事务中执行了错误的语法命令,则整个事务将不会被执行。内部语法使用错误。
代码语言:javascript copy.0.0.1:> get name "zhangsan".0.0.1:> multiOK.0.0.1:> set mu:id 1QUEUED# 执行语法不正确的操作.0.0.1:> incr nameQUEUED。 0.0.1:> set mu:age 2QUEUED.0.0.1:> exec1) OK2) (error) ERR 值不是整数或超出范围3) OK 通过上面的演示,在事务操作中执行了不正确的语法,事务最终提交后。
事务中正确的命令仍然没有执行。这不符合事务原子性的特点。
事务原子性总结。一个。
当事务中语法使用不当时,事务将跳过当前命令。其他正确的命令仍然执行。
b. Redis中的事务并不一定满足原子性的特征。c.在一个事务中,Redis只会检查执行的命令是否是合法命令。
如果合法,则将其添加到命令队列中。如果非法,则直接阻塞整个交易的执行。
常见问题总结 MySQL 中的事务和 Redis 事务的区别 Redis 事务和 Mysql 事务 我们知道关系型数据库 Mysql 事务有四大特点:“原子性、一致性、隔离性、持久性”。不过,为了保证Redis高效地处理客户端请求,Redis事务消除了传统关系数据库的“事务回滚、加锁、解锁”等消耗性能的操作,使得Redis事务实现起来简单。
在原子性上,Redis事务只能保证单个命令的原子性,而无法保证多个命令的原子性。例如上面索道的运行时错误,即使中间出现运行时错误,后续正确的命令也会正确执行,而没有任何响应。
滚动操作。由于没有原子性,无法保证数据一致性,需要程序员手动实现。
Reids在进行交易时,不会被中断,直到交易完成。它还具有一定程度的隔离性,并且Redis还可以持久化数据。
版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
标签:
相关文章
06-21
06-18
06-18
最新文章
【玩转GPU】ControlNet初学者生存指南
【实战】获取小程序中用户的城市信息(附源码)
包雪雪简单介绍Vue.js:开学
Go进阶:使用Gin框架简单实现服务端渲染
线程池介绍及实际案例分享
JMeter 注释 18 - JMeter 常用配置组件介绍
基于Sentry的大数据权限解决方案
【云+社区年度征文集】GPE监控介绍及使用