参考:https://www.cnblogs.com/DeepInThought/p/10720132.html

Redis不保证原子性:
Redis中,单条命令是原子性执行的,但事务不保证原子性,且没有回滚。事务中任意命令执行失败,其余的命令仍会被执行

Redis事务相关命令:
  watch key1 key2 ... : 监视一或多个key,如果在事务执行之前,被监视的key被其他命令改动,则事务被打断 ( 类似乐观锁 )
  multi : 标记一个事务块的开始( queued )
  exec : 执行所有事务块的命令 ( 一旦执行exec后,之前加的监控锁都会被取消掉 ) 
  discard : 取消事务,放弃事务块中的所有命令
  unwatch : 取消watch对所有key的监控

一但执行 EXEC 开启事务的执行后,无论事务使用执行成功, WARCH 对变量的监控都将被取消。
故当事务执行失败后,需重新执行WATCH命令对变量进行监控,并开启新的事务进行操作。

在Redis事务中会出现两类错误:
1.命令语法错误、参数错误等,命令没有进入事务的命令队列,直接就返回错误。
2.命令进入事务的命令队列,但在执行EXEC后出错,例如对错误的数据类型使用了不支持的操作

==================

Redis 的事务是不可嵌套的, 当客户端已经处于事务状态, 而客户端又再向服务器发送 MULTI 时, 服务器只是简单地向客户端发送一个错误, 然后继续等待其他命令的入队。 MULTI 命令的发送不会造成整个事务失败, 也不会修改事务队列中已有的数据。

WATCH 只能在客户端进入事务状态之前执行, 在事务状态下发送 WATCH 命令会引发一个错误, 但它不会造成整个事务失败, 也不会修改事务队列中已有的数据(和前面处理 MULTI 的情况一样)
————————————————
版权声明:本文为CSDN博主「kingmax54212008」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/kingmax54212008/article/details/82731150

》》》》》》》》》》》》》》》》》》

通过setnx  key value 实现分布式锁,通过del key 实现释放锁

最新文章

  1. 一步步开发自己的博客 .NET版(3、注册登录功能)
  2. ELK系统中kibana展示数据的时区问题
  3. android-android各大手机系统打开权限管理页面
  4. 翻阅《数据结构与算法javascript描述》--数组篇
  5. ADB工具 获取ROOT权限及复制文件方法
  6. Linux xargs命令
  7. ios app名字的多语言支持
  8. redis 异常排查
  9. C++中实现回调机制的几种方式(一共三种方法,另加三种)
  10. QT类的继承结构
  11. hdu1087Super Jumping! Jumping! Jumping!(最大递增序列和)
  12. 设计模式 - 模板方法模式(template method pattern) JFrame 具体解释
  13. CentOS利用Nginx+Docker部署.netcore应用
  14. 55. Jump Game(中等)
  15. angular.min.js:118 Error: [ng:areq] http://errors.angularjs.org/1.5.8/ng/areq?
  16. 初步了解three.js
  17. mysql 地理位置定位
  18. kmalloc vmalloc kzalloc malloc 和 get_free_page()【转】
  19. 转发:查看centos中的用户和用户组
  20. angular2.0学习笔记7.echarts 地图(type:'map')slice undifined 出错问题

热门文章

  1. R画柱形图和箱线图
  2. LeetCode 665. 非递减数列(Non-decreasing Array)
  3. [WCF] - 使用 bat 批处理文件将 WCF 服务部署为 Windows Service
  4. Quartz.Net—DateBuilder
  5. CMakeLists 添加 -pthread 编译选项 undefined reference to pthread_atfork
  6. 函数的第一类对象,f格式化,迭代器以及递归
  7. linux终端提示符修改
  8. 《MySQL数据库从入门到精通》 高级运维人才的必备书籍
  9. idea下spring boot jpa写原生sql的时候,报Cannot resolve table错误
  10. JAVA实现种子填充算法