Redis 事务 与 管道

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: Redis 事务 与 管道

redis事务

谈到事务大家可能就会想起mysql中的事务

注意这里的事务不是指的是事务的四大特性acid

持久性  原子性 隔离性 一致性

事务的概念就是 一组命令,串行化执行而不被打断

这里redis的事务和mysql的事务就不太一样

传统关系型数据库的事务主要强调的是一个没有执行完成就直接回滚

注:redis这里不存在回滚的概念

而redis这里就分为很多种情况

1.正常执行

就是和正常事务是相同的,原子化执行

使用multi开启事务

使用exec结束事务

两个指令之间的指令会串行化执行

2.discard 放弃事务

multi    

...

...

discard

直接放弃队列中的事务

3.全体连坐

就是在正常执行的期间出现语法错误等等

4.冤有头债有主

就是假如几条命令在语法阶段没有检查出来

而在编译期间检查出来了,就只会让这一条指令失效

比如我设置一个key对应的邮箱号 对其使用自增操作

在语法上是可以浑水摸鱼过去的但是实际无法执行成功

5.watch监控

这里的watch监控就是类似于乐观锁(CAS)

因为redis是一个高性能的数据库,肯定不能使用悲观锁呀

就是认为在执行期间肯定不会有人动我的数据

所以我不加锁只是执行比较,看内存中的数据是不是被修改过了

如果是修改过了就直接返回一个nil,且队列中的指令不生效

总结

整体执行流程是这样的

multi   开启事务  

指令进入队列

exec 开始执行事务

管道

redis管道操作也是批处理的操作

执行原理就是全打包发送,批量返回数据,避免内核态和用户态的多次转化

有人可能认为这个跟事务有什么区别吗

区别可大了

这里的批处理指令不是原子的

redis原生的事务处理是原子的

事务是一个一个发的,执行的时候可能会进行阻塞

管道是一起发的,不会阻塞

事务是只需要客户端即可

而管道需要客户端和服务端一起操作

指令

比如将cmd.txt写入redis cat cmd.txt | redis-cli -a abc123 --pipe

这里的cmd.txt中装的就是指令

注意:

管道如果命令条数过多 缓冲指令只会依次执行 发生异常了后续命令还是会继续执行的 当客户端发布命令使用管道的时候,服务端会被迫恢复一个队列答复 占用的内存就会很多 性能也必然下降

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
2月前
|
缓存 NoSQL Redis
Redis 事务
10月更文挑战第18天
27 1
|
4月前
|
负载均衡 NoSQL 算法
一天五道Java面试题----第十天(简述Redis事务实现--------->负载均衡算法、类型)
这篇文章是关于Java面试中Redis相关问题的笔记,包括Redis事务实现、集群方案、主从复制原理、CAP和BASE理论以及负载均衡算法和类型。
一天五道Java面试题----第十天(简述Redis事务实现--------->负载均衡算法、类型)
|
28天前
|
NoSQL 网络协议 Java
【赵渝强老师】Redis的管道Pipeline
Redis采用客户端-服务器模型和请求/响应协议,通常一个请求包括客户端发送查询请求并等待服务端响应。为了提高性能,Redis引入了管道PipeLine技术,可以一次性发送多条命令并一次性返回结果,减少客户端与服务器间的通信次数,从而降低往返延迟。示例代码展示了普通命令和管道命令在插入1万条数据时的性能差异,后者执行时间显著缩短。视频讲解提供了更详细的解释。
|
2月前
|
移动开发 NoSQL 网络协议
Redis 管道技术
10月更文挑战第21天
23 3
|
2月前
|
SQL 分布式计算 NoSQL
大数据-42 Redis 功能扩展 发布/订阅模式 事务相关的内容 Redis弱事务
大数据-42 Redis 功能扩展 发布/订阅模式 事务相关的内容 Redis弱事务
25 2
|
2月前
|
NoSQL 关系型数据库 MySQL
Redis 事务特性、原理、具体命令操作全方位诠释 —— 零基础可学习
本文全面阐述了Redis事务的特性、原理、具体命令操作,指出Redis事务具有原子性但不保证一致性、持久性和隔离性,并解释了Redis事务的适用场景和WATCH命令的乐观锁机制。
321 0
Redis 事务特性、原理、具体命令操作全方位诠释 —— 零基础可学习
|
3月前
|
存储 NoSQL Redis
Redis 管道技术
【9月更文挑战第16天】Redis 管道技术通过批量发送命令并一次性读取响应,显著提升了与 Redis 服务器交互的性能。其工作原理包括命令缓冲、批量发送、响应接收与处理。管道技术减少了网络往返次数,提高了资源利用效率,并使代码更简洁。适用于批量操作、高并发环境及复杂业务逻辑等场景,是优化 Redis 应用性能的强大工具。
|
4月前
|
NoSQL 关系型数据库 Redis
Redis6入门到实战------ 九、10. Redis_事务_锁机制_秒杀
这篇文章深入探讨了Redis事务的概念、命令使用、错误处理机制以及乐观锁和悲观锁的应用,并通过WATCH/UNWATCH命令展示了事务中的锁机制。
Redis6入门到实战------ 九、10. Redis_事务_锁机制_秒杀
|
3月前
|
存储 NoSQL Redis
10)Redis 的管道技术
10)Redis 的管道技术
51 0
|
3月前
|
监控 NoSQL 关系型数据库
9)Redis 居然也有事务
9)Redis 居然也有事务
34 0