【Redis】不卡壳的 Redis 学习之路:事务

本文详细介绍了Redis的事务机制,包括事务的概念、作用、特点,以及相关指令如multi、exec、discard。还探讨了Redis的乐观锁策略,使用watch实现监控,并通过实例展示了事务执行的场景。
摘要由CSDN通过智能技术生成

本文是Redis系列第3篇,前2篇欢迎移步

【Redis】不卡壳的 Redis 学习之路:从十大数据类型开始入手_AQin1012的博客-CSDN博客关于Redis的数据类型,各个文章总有些小不同,我们这里讨论的是Redis 7.0,为确保准确,我们直接看官网。https://blog.csdn.net/aqin1012/article/details/130365083

【Redis】持久化机制详解:从RDB到AOF,你需要知道的一切_AQin1012的博客-CSDN博客持久化其实就4个单词:加强数据安全Redis支持两种不同的持久化机制,RDB和AOF。https://blog.csdn.net/aqin1012/article/details/130481261本文目录

​什么是事务

Redis的事务有什么作用

Redis事务 🆚 数据库事务

Redis事务的特点

事务相关指令

正常执行

取消事务

异常情况

watch监控

乐观锁

乐观锁策略

语法操作

实操实例

 总结


官网地址,先上为敬~ https://redis.io/docs/manual/transactions/

​什么是事务

数据库中的事务是指在一次与数据库连接的会话中,所有的SQL语句,要么都成功,要么都失败。在Redis中,事务是指可以一次执行多个命令,本质是一组命令的集合。一个事务中的所有命令都会被序列化,按顺序地串行执行而不会被其他命令插入

Redis的事务有什么作用

可以一次性、顺序性、排他性的执行一系列命令(一个队列中)

Redis事务 🆚 数据库事务

Redis事务的特点

  1. 单独的隔离操作

    1. Redis的事务仅仅是保证事务里的操作会被连续独占的执行,redis命令执行是单线程架构,在执行完事务内所有指令前是不可能再去同时执行其他客户端的请求的

  2. 没有隔离级别的概念

    1. 因为事务提交前任何指令都不会被实际执行,也就不存在“事务内的查询要看到事务里的更新,在事务外查询不能看到”这种问题了

  3. 不保证原子性

    1. Redis的事务不保证原子性,也就是不保证所有指令同时成功或同时失败,只有决定是否开始执行全部指令的能力,没有执行到一半进行回滚的能力

  4. 排它性

    1. Redis会保证一个事务内的命令依次执行,而不会被其它命令插入

事务相关指令

正常执行

  • 事务开始:multi

  • 事务结束:exec

取消事务

  • 事务开始:multi

  • 事务取消:discard

异常情况

  • Redis不支持回滚(rollbacks)

  • 语法错误,全部取消(全体连坐)

  • 语法通过,对的成功,异常的失败(冤头债主)

watch监控

Redis使用的是乐观锁(为了高性能)

乐观锁

Optimistic Lock,每次拿数据都认为别人不会修改,所以不会上锁,但是在更新是我时候会判断下此期间别人有没有去更新过这个数据

乐观锁策略

提交版本必须大于当前记录版本才能执行更新,否则整个事务失败 Redis使用 watch 提供乐观锁,类似CAS(Check and Set)

语法操作
  • watch key 添加监控

  • unwatch key 取消监控

执行exec、或者客户端连接丢失监控会自动取消

实操实例

exec结束当前事务,返回了nil,再次查询name发现并未修改成功,而且a的修改也未成功,即整个事务失败了

 总结

  • 开启:以MULTI开始一个事务

  • 入队:将多个命令入队到事务中,接到这些命令并不会立即执行,而是放到等待执行的事务队列里面

  • 执行:由EXEC命令触发事务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AQin1012

求小鱼干呢~~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值