9、Redis 事务机制

1、事务的定义

Redis 事务是一个单独的隔离操作: 事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。

Redis事务的主要作用就是串联多个命令防止别的命令插队。

2、Multi、Exec、discard

输入Multi命令开始事务,输入的命令都会依次进入命令队列中,但不会执行,直到输入Exec后,Redis会将之前的命令队列中的命令依次执行。

组队的过程中可以通过discard来放弃组队中命令的执行

3、事务的错误处理

  • 如果在multi 组队阶段命令就报错,这个阶段的所有命令都不能执行。
  • 如果在Ecxejieduan 执行过程中命令执行出现错误,只有出现错误的命令不会被执行,其他的命令照样执行

4、悲观锁

悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁表锁等,读锁写锁等,都是在做操作之前先上锁。

5、乐观锁

乐观锁(Optimistic Lock), 顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号等机制乐观锁适用于多读的应用类型,这样可以提高吞吐量。Redis就是利用这种check-and-set机制实现事务的。

6、具体操作

1、WATCH key【keys】

执行multi之前,先执行watch key1 [key2],可以监视一个(或多个) key ,如果在事务执行之前这个(或这些) key被其他命令所改动,那么事务将被打断。

2、unwatch

取消 WATCH 命令对所有 key 的监视。

如果在执行 WATCH 命令之后,EXEC 命令或DISCARD 命令先被执行了的话,那么就不需要再执行UNWATCH 了。

7、事物的特性

  • 单独的隔离操作

    • 事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。
  • 没有隔离级别的概念
    • 队列中的命令没有提交之前都不会实际被执行,因为事务提交前任何指令都不会被实际执行
  • 不保证原子性
    • 事务中如果有一条命令执行失败,其后的命令仍然会被执行,没有回滚

redis 学习 --->>> 9、Redis 事务机制相关推荐

  1. Redis学习笔记---Redis的事务

    Redis学习笔记-Redis的事务 1. Redis事务(弱事务)和Mysql事务对比 Atomicity(原子性):构成事务的的所有操作必须是一个逻辑单元,要么全部执行,要么全部不执行. Redi ...

  2. Redis学习笔记---Redis的主从复制

    Redis学习笔记-Redis的主从复制 1.Redis的高可用性 高可用性(High Availability)通常来描述一个系统经过专门的设计,从而减少停工时间,而保持其服务的高度可用性. Rei ...

  3. Redis学习笔记---Redis的模式订阅与退订

    Redis学习笔记-Redis的模式订阅与退订 1.发布订阅简介 发布订阅是一种通信的模式,Redis提供了发布订阅功能,可以用于消息的传输 Redis的发布订阅机制包括三个部分,publisher( ...

  4. Redis学习笔记~Redis在windows环境下的安装

    Redis是一个key-value的存储系统,它最大的特点就是可以将数据序列化到文件中. redis存储在服务器的内存或者文件中,它不是session,不是cookies,它只是个更安全,更稳定,更可 ...

  5. Redis学习笔记~Redis事务机制与Lind.DDD.Repositories.Redis事务机制的实现

    回到目录 Redis本身支持事务,这就是SQL数据库有Transaction一样,而Redis的驱动也支持事务,这在ServiceStack.Redis就有所体现,它也是目前最受业界认可的Redis驱 ...

  6. 【Redis学习】Transaction事务管理

    1.相关命令: (1)MULTI 标记一个事务块的开始.事务块内的多条命令会按照先后顺序被放进一个队列当中,最后由 EXEC 命令原子性(atomic)地执行. 返回值:总是返回 OK . redis ...

  7. Redis 学习 - 2.Redis高级:RDB AOF 事务 锁 删除策略 Bitmaps HyperLogLog GEO

    目录 2. Redis高级 2.1 Redis Linux安装 047-Linux安装redis 048-指定端口启动服务 049-指定配置文件启动服务 050-配置文件启动目录管理 2.2 持久化 ...

  8. Redis学习之Redis概述及原理、基本操作及持久化

    一.Redis介绍 Redis是一个开源的使用ANSI C语言编写.遵守BSD协议.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API. 它通常被称为数据结构服务 ...

  9. 【Redis学习】Redis管理命令总结

    1.键管理 之前通过对五种数据类型的操作命令的学习发现,Redis在对每种数据进行处理之前,都要先指定该数据的key,然后再指定对该数据进行何种操作. Redis中的key有点类似于Java中的变量名 ...

  10. Redis学习之Redis概述与安装以及性能测试

    Redis入门 概述 Redis是什么 Redis(remote dictionary server)远程字典服务器 是一个开源的使用c语言编写.支持网络.可基于内存亦可持久化的日志型.key-val ...

最新文章

  1. 面试官 | 写if 时不带 else,你的代码会更好!
  2. Runtime知识点整理
  3. AI前沿:数据智能产品与技术漫谈
  4. 影响solr性能的一些因素(附使用经验)
  5. 天津科技大学 物理实验平台使用教程及相关问题
  6. java运行效率优化_如何优化JAVA代码及提高执行效率
  7. C++学习之路 | PTA乙级—— 1063 计算谱半径 (20 分)(精简)
  8. java开发http协议接口_java开发接口利用http协议传输数据
  9. IC设计EDA软件虚拟机环境配置与安装教程
  10. java 获取bean的注解_如何获取spring 注解的bean
  11. POJ 2082Lost Cows
  12. pythonint函数的参数_pythonint函数怎么用
  13. 错误:java.lang.IllegalArgumentException: Service not registered
  14. 拍牌服务器提交中断,沪牌拍牌的经验总结
  15. 如何用WikiExtractor提取维基百科词汇
  16. python 实现接口上传图片
  17. 史上最全的鸿蒙学习资料——润和满天星系列Pegasus资料汇总
  18. 5.18 对表格按行进行排序 [原创Excel教程]
  19. 基于JAVA养老院管理系统计算机毕业设计源码+系统+数据库+lw文档+部署
  20. 1024Studio官网

热门文章

  1. XAMARIN模拟器的配置与连接
  2. 技术文摘8 芳 象限
  3. 感谢刘遄老师,认证《Linux就该这么学》
  4. 自己制作的视频,如何转换成二维码?
  5. 【MSER】基于MSER算法的交通标志分割仿真
  6. OpenCV中的图像处理 —— 图像梯度+Canny边缘检测+图像金字塔
  7. win10使用脚本快速切换网络
  8. 处理SIGCHLD信号
  9. PCD文件格式(The PCD (Point Cloud Data) file format)
  10. 将一个excel表中的多个sheet表进行拆分