69、简述Redis事务实现

news/2024/10/22 16:50:11/

Redis事务实现

  • 一、事务开始
  • 二、命令入队
  • 三、事务执行

一、事务开始

MULTI命令的执行,标识着一个事务的开始。MULTI命令会将客户端状态的flags 属性中打开REDIS_MULTI标识来完成的。

二、命令入队

当一个客户端切换到事务状态之后,服务器会根据这个客户端发送来的命令来执行不同的操作。如果客户端发送的命令为MULTI、EXEC、WATCH、DISCARD中的一个,立即执行这个命令,否则将命令放入一个事务队列里面,然后向客户端返回QUEUED 回复

  • 如果客户端发送的命令为 EXEC、DISCARD、WATCH、MULTI 四个命令的其中一个,那么服务器立即执行这个命令。
  • 如果客户端发送的是四个命令以外的其他命令,那么服务器并不立即执行这个命令。
    首先检查此命令的格式是否正确,如果不正确,服务器会在客户端状态 (redisClient) 的 flags 属性关闭
    REDIS_MULTI标识,并且返回错误信息给客户端。
    如果正确,将这个命令放入一个事务队列里面,然后向客户端返回 QUEUED 回复

事务队列是按照FIFO的方式保存入队的命令

三、事务执行

客户端发送 EXEC命令,服务器执行 EXEC 命令逻辑

  • 如果客户端状态的 flags 属性不包含 REDIS MULTI 标识,或者包含 REDIS_DIRTY_CAS 或者REDIS_DIRTY_EXEC标识,那么就直接取消事务的执行
  • 否则客户端处于事务状态 (flags有 REDIS_MULTI 标识),服务器会遍历客户端的事务队列,然后执行事务队列中的所有命令,最后将返回结果全部返回给客户端

Redis 不支持事务回滚机制,但是它会检查每一个事务中的命令是否错误

Redis 事务不支持检查那些程序员自己逻辑错误。例如对String 类型的数据库键执行对 HashMap 类型的操作!

  • WATCH命令是一个乐观锁,可以为 Redis 事务提供check-and-set (CAS)行为。可以监控一个或多个键,一旦其中有一个键被修改(或删除),之后的事务就不会执行,监控一直持续到EXEC命令。
  • MULTI命令用于开启一个事务,它总是返回OK。MULTI执行之后,客户端可以继续向服务器发送任意多条命令,这些命令不会立即被执行,而是被放到一个队列中,当EXEC命令被调用时,所有队列中的命令才会被执行。
  • EXEC:执行所有事务块内的命令。返回事务块内所有命令的返回值,按命令执行的先后顺序排列。当操作被打断时,返回空值 null。
  • 通过调用DISCARD,客户端可以清空事务队列,并放弃执行事务,并且客户端会从事务状态中退出。
  • UNWATCH命令可以取消watch对所有key的监控

http://www.ppmy.cn/news/918474.html

相关文章

【1】Vite+Vue3 登录功能

一、介绍 在当今前端开发的领域里,快速、高效的项目构建工具以及使用最新技术栈是非常关键的。ViteVue3 组合为一体的项目实战示例专栏将带领你深入了解和掌握这一最新的前端开发工具和框架。 作为下一代前端构建工具,Vite 在开发中的启动速度和热重载…

12306爬虫抢票软件代码

1、需要登录页面,手动输入账号密码! 2、地查询车次,输入 起点、目的、出发时间,找到车次,就进行选择 3、选择完成后,就查询该车次是否有余票(进行显示)如果有就进行购买&#xff0c…

【火车票】心蓝抢票软件

实时监控抢票,需要 交钱购买注册。。升学 向海春 有买,哈哈 转载于:https://www.cnblogs.com/smilexumu/p/7489850.html

程序员放假抢票软件

分流抢票:https://www.bypass.cn/ 抢火车票神器

火车票软件哪个好用_抢火车票软件哪个好用?

展开全部 360抢票软件好用。 360今年除对抢票王产品进行技术升级之外,还加大了对手机端e68a8462616964757a686964616f31333431366432抢票软件的技术研发,并增加数百台服务器支持,使手机购票成功率显著提升。用户除了通过PC端抢票王刷票之外&a…

火车票网上抢票软件推荐(亲测)

2019抢票软件哪个好?面对众多的抢票软件,很多小伙伴们都不知道哪个成功率高,今天小编为大家整理了2019抢票成功率高软件推荐,一起来get下吧。 2019年哪款软件抢票成功率高?2019抢票软件哪个好? 1、 去哪儿旅…

微言软件出品——微言火车票抢票大师

微言软件出品——微言火车票抢票大师 2012/1/1 19:26:30 微言软件 微言抢票大师,是全网首个具备抢票功能的软件, 依托研发团队强大的浏览器技术能力,使用嵌入式IE进入中铁官网购票系统自动托管式,全程可视化抢票,让你体验软件…

python爬虫抢火车票_如何用python写一个简单的12306抢票软件|python 爬火车票 教程...

python 如果抓取验证码图片 类似12306的登录验证码图片 这个以前做次。最大的麻烦是码的识别算法的识别率太低。12306那种网站登陆错3次就限制你20分钟。所以除非你有33%以上的识别率否则不要尝试了。 通常做法是另存验证码图片,通常收集几十个,然后训…