1.Redis的事务仅仅是保证事务里的操作会被连续独占的执行,Redis的命令执行是单线程,

2.Redis不保证事务的所有指令可以同时成功或者同时失败,只可以决定是否开始执行全部指令的能力,因此也没有回滚

3.Redis可以保证一个事物内的命令会依次执行,不会被其他指令插入

MULTI #事务开始的标志
DISCARD #取消事务,放弃执行事务的所有命令
EXEC #执行所有事务块内的命令
WATCH #监视key 如果事务在执行前这个key被改动会打断事物
UNWATCH #取消watch对所有key的监视
#正常执行事务
MULTI EXEC
#放弃执行事务
MULTI DISCARD

一致:在执行事务的时候如果有一个命令语法出错,Redis就会返回错误,所有命令都不执行

非一致性:在执行事务的时候如果语法没有出错,但是语义出错,那么就会不执行错误语句,正确语句照常执行

比如:set k1 123@qq.com

      incr k1

Redis支持乐观锁,关键字wacth

第一个客户端
wacth v1
multi
-----------
第二个客户端
set v1 10
-----------
第一个客户端
set v1 20
exec

上面这个例子中的事务会保持一致性,在事务中其他指令也不会发生

注意:在提交exec的时候之前加的监控锁就都被取消了,当客户端失去链接的时候所有东西的监控都会被取消

------------------------------------------------------------------------------------------------------------------------------------------------------------------------

管道可以一次性发送多条命令给客户端,服务端依次处理完毕后,将一条响应结果依次返回,减少了RTT,实现原理也是队列,保证了数据的顺序性

是批处理的优化(mget mset)但是mset是string,管道可以跨数据类型

cat test.txt | redis-cli -a 123456 --pipe

管道与原生命令的对比:

  ①原生批量命令是原子性的,管道是非原子性

  ②原生批量命令一次只能执行一种命令,管道支持处理批量不同命令

  ③原生批量命令是服务端实现,管道命令是服务端和客户端

Redis的事务transactions与管道pipeline的更多相关文章

  1. 9、redis之事务2-Jedis的八种调用方式(事务、管道、分布式)介绍

    1.普通同步 @Test public void test1Normal() { Jedis jedis = new Jedis("localhost"); long start ...

  2. $Django python中使用redis, django中使用(封装了),redis开启事务(管道)

    一 Python操作Redis之普通连接 #先安装 pip3 install redis import redis r = redis.Redis(host='127.0.0.1', port=637 ...

  3. Redis 管道pipeline

    Redis是一个cs模式的tcp server,使用和http类似的请求响应协议. 一个client可以通过一个socket连接发起多个请求命令. 每个请求命令发出后client通常会阻塞并等待red ...

  4. 大数据学习day34---spark14------1 redis的事务(pipeline)测试 ,2. 利用redis的pipeline实现数据统计的exactlyonce ,3 SparkStreaming中数据写入Hbase实现ExactlyOnce, 4.Spark StandAlone的执行模式,5 spark on yarn

    1 redis的事务(pipeline)测试 Redis本身对数据进行操作,单条命令是原子性的,但事务不保证原子性,且没有回滚.事务中任何命令执行失败,其余的命令仍会被执行,将Redis的多个操作放到 ...

  5. 【Redis】事务

    在Redis中,事务是以multi/exec/discard进行的, 其中multi表示事务的开始, exec表示事务的执行,discard表示丢弃事务. > multi # 事务的开始 OK ...

  6. Redis的事务功能详解

    Redis的事务功能详解 MULTI.EXEC.DISCARD和WATCH命令是Redis事务功能的基础.Redis事务允许在一次单独的步骤中执行一组命令,并且可以保证如下两个重要事项: >Re ...

  7. 8、redis之事务1-redis命令

    一.概述:      和众多其它数据库一样,Redis作为NoSQL数据库也同样提供了事务机制.在Redis中,MULTI/EXEC/DISCARD/WATCH这四个命令是我们实现事务的基石.相信对有 ...

  8. redis(4)事务

    一.事务 一般来说,事务必须满足4个条件,也就是我们常说的ACID: 1)Atomicity 原子性:一个事务中的所有操作要么全部完成,要么全部不完成,不会结束在中间的某个环节.事务在执行过程中发生错 ...

  9. Redis的事务讲解

    1. Redis事务的概念 是什么: 可以一次执行多个命令,本质是一组命令的集合.一个事务中的所有命令都会序列化,按顺序串行化的执行而不会被其他命令插入 能干嘛:一个队列中,一次性.顺序性.排他性的执 ...

  10. 2020重新出发,NOSQL,Redis的事务

    Redis的基础事务和常用操作 和其他大部分的 NoSQL 不同,Redis 是存在事务的,尽管它没有数据库那么强大,但是它还是很有用的,尤其是在那些需要高并发的网站当中. 使用 Redis 读/写数 ...

随机推荐

  1. 多项分布模拟及 Seaborn 可视化教程

    多项分布 简介 多项分布是二项分布的推广,它描述了在 n 次独立试验中,k 种不同事件分别出现次数的离散概率分布.与二项分布只能有两种结果(例如成功/失败)不同,多项分布可以有 k 种(k ≥ 2)及 ...

  2. dom基本获取 标签文本操作

     // 总结:         // 1, 通过id属性值,获取标签对象         //    document.getElementById()          //    一个标签对象   ...

  3. CF1753

    CF1753 成功因为虚拟机炸了,重新写一遍此文. 都是没有保存的错. A. Make Nonzero Sum 由于 Note that it is not required to minimize ...

  4. 推荐十个优秀的ASP.NET Core第三方中间件,你用过几个?

    ASP.NET Core 作为一个强大的.跨平台的.高性能的开源框架,为开发者提供了丰富的功能和灵活的扩展性.其中,中间件(Middleware)是 ASP.NET Core 架构中的核心组件之一,它 ...

  5. 已将此(这些)订阅标记为不活动,必须将其重新初始化。需要删除 NoSync 订阅,然后重

    已将此(这些)订阅标记为不活动,必须将其重新初始化.需要删除 NoSync 订阅,然后重 查找状态不正常的发布 use distribution go select status,*from dbo. ...

  6. Windows SERVER 新建FTP 服务器

    Windows SERVER 新建FTP 服务器 FTP主机上的操作(本机IP为:192.168.137.2): 1.新建一个名为 ftpa 的Windows用户. 2.在D盘新建一个 FtpBook ...

  7. dubbo~全局异常拦截器的使用与设计缺陷~续

    上一次的介绍,主要围绕如何统一去捕获异常,以及为每一种异常添加自己的Mapper实现,并且我们知道,当在ExceptionMapper中返回非200的Response,不支持application/j ...

  8. cdn静态资源加速

    阿里云cdn产品 https://www.aliyun.com/product/cdn CDN通过广泛的网络节点分布,提供快速.稳定.安全.可编程的全球内容分发加速服务,支持将网站.音视频.下载等内容 ...

  9. 解锁LLMs的“思考”能力:Chain-of-Thought(CoT) 技术推动复杂推理的新发展

    解锁LLMs的"思考"能力:Chain-of-Thought(CoT) 技术推动复杂推理的新发展 1.简介 Chain-of-Thought(CoT)是一种改进的Prompt技术, ...

  10. mybatis insert foreach批量添加

    mybatis insert foreach批量添加 int insertSelectiveBatch(List<ImageDetailEntity> myList); //写法1 < ...