Redis 事务 与 管道

本文涉及的产品
云数据库 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
相关文章
|
4天前
|
NoSQL Redis 数据库
10- 你们用过Redis的事务吗 ? 事务的命令有哪些 ?
```markdown Redis事务包括MULTI、EXEC、DISCARD、WATCH四个命令。虽具备事务功能,但在实际开发中使用较少。 ```
44 7
|
4天前
|
NoSQL Redis 数据库
什么是Redis的事务?
Redis事务提供原子性和顺序性,确保命令按顺序执行且不被打断。核心概念包括原子性、顺序性、隔离性和持久性。关键指令有MULTI、EXEC、DISCARD和WATCH,用于事务的开始、执行、取消和监视。这保障了命令的完整性,防止并发操作导致的数据不一致。
16 2
|
4天前
|
NoSQL Redis
Redis事务:保证数据操作的一致性和可靠性
Redis事务:保证数据操作的一致性和可靠性
|
4天前
|
存储 NoSQL 关系型数据库
【Redis】Redis的特性和应用场景 · 数据类型 · 持久化 · 数据淘汰 · 事务 · 多机部署
【Redis】Redis的特性和应用场景 · 数据类型 · 持久化 · 数据淘汰 · 事务 · 多机部署
15 0
|
4天前
|
监控 NoSQL 关系型数据库
深入浅出Redis(五):Redis的事务机制与ACID原则
深入浅出Redis(五):Redis的事务机制与ACID原则
|
4天前
|
缓存 NoSQL Java
【Redis系列笔记】Redis事务
Redis事务的本质是一组命令的集合。事务支持一次执行多个命令,一个事务中所有命令都会被序列化。在事务执行过程,会按照顺序串行化执行队列中的命令,其他客户端提交的命令请求不会插入到事务执行命令序列中。
68 3
|
4天前
|
存储 缓存 NoSQL
Redis使用管道实现批量处理
Redis使用管道实现批量处理
39 0
|
4天前
|
监控 NoSQL Java
|
4天前
|
消息中间件 NoSQL Kafka
Redis事务与异步方式
Redis事务与异步方式
36 0
|
12月前
|
NoSQL Java 关系型数据库
Redis_事务_锁机制_秒杀
Redis_事务_锁机制_秒杀