当前位置: 首页 > news >正文

贵阳网站方舟网络排名前50名免费的网站

贵阳网站方舟网络,排名前50名免费的网站,做网站运用的软件,中文的网站做不成二维码文章目录 Redis 事务Redis 的事务和 MySQL 事务的区别:事务操作MULTIEXECDISCARDWATCHUNWATCHwatch的实现原理 总结 Redis 事务 什么是事务 Redis 的事务和 MySQL 的事务 概念上是类似的. 都是把⼀系列操作绑定成⼀组. 让这⼀组能够批量执行 Redis 的事务和 MySQL 事务的区别:…

文章目录

    • Redis 事务
      • Redis 的事务和 MySQL 事务的区别:
      • 事务操作
        • MULTI
        • EXEC
        • DISCARD
        • WATCH
        • UNWATCH
        • watch的实现原理
      • 总结

Redis 事务

什么是事务

Redis 的事务和 MySQL 的事务 概念上是类似的. 都是把⼀系列操作绑定成⼀组. 让这⼀组能够批量执行

Redis 的事务和 MySQL 事务的区别:

  • 弱化的原子性: redis 没有 “回滚机制”. 只能做到这些操作 “批量执行”. 不能做到 “⼀个失败就恢复到
    初始状态”
  • 不保证⼀致性: 不涉及 “约束”. 也没有回滚. MySQL 的⼀致性体现的是运行事务前和运行后 , 结果都
    是合理有效的, 不会出现中间⾮法状态
  • 不需要隔离性: 也没有隔离级别, 因为不会并发执行事务 (redis 单线程处理请求)
  • 不需要持久性: 是保存在内存的. 是否开启持久化, 是redis-server 自己的事情, 和事务无关

Redis 事务本质上是在服务器上搞了⼀个 “事务队列”. 每次客户端在事务中进行⼀个操作, 都会把命令先
发给服务器, 放到 “事务队列” 中(但是并不会立即执行)
而是会在真正收到 EXEC 命令之后, 才真正执行队列中的所有操作.

因此, Redis 的事务的功能相比于 MySQL 来说, 是弱化很多的. 只能保证事务中的这⼏个操作是 “连续
的”, 不会被别的客户端 “加塞”, 仅此而已.

事务操作

MULTI

开启⼀个事务. 执行成功返回 OK

在这里插入图片描述

EXEC

真正执行事务

在这里插入图片描述

每次添加⼀个操作, 都会提示 “QUEUED”, 说明命令已经进入客户端的队列了. 真正执行 EXEC 的时候, 客户端才会真正把上述操作发送给服务器. 此时就可以获取到上述 key 的值了

在这里插入图片描述

DISCARD

放弃当前事务,此时直接清空事务队列.,之前的操作都不会真正执行到

在这里插入图片描述

WATCH

在执行事务的时候, 如果某个事务中修改的值, 被别的客户端修改了, 此时就容易出现数据不⼀致的问

例如

# 客户端1 先执行
127.0.0.1:6379> MULTI
OK
127.0.0.1:6379> set key 100
QUEUED# 客户端2 再执行
127.0.0.1:6379> set key 200
OK# 客户端1 最后执行
127.0.0.1:6379> EXEC
OK

此时, key 的值是多少呢??

客户端1

在这里插入图片描述

客户端2

在这里插入图片描述

从输⼊命令的时间看, 是客端1 先执行的 set key 100. 客户端2 后执行的 set key 200.

这个时候,就容易发生歧义,watch 命令就是⽤来解决这个问题的,watch 在该客户端上监控⼀组具体的 key

  • 当开启事务的时候, 如果对 watch 的 key 进行修改, 就会记录当前 key 的 “版本号”. (版本号是个简单
    的整数, 每次修改都会使版本变大. 服务器来维护每个 key 的版本号情况)
  • 在真正提交事务的时候, 如果发现当前服务器上的 key 的版本号已经超过了事务开始时的版本号, 就
    会让事务执行失败. (事务中的所有操作都不执行).

客户端1先执行

在这里插入图片描述

然后客户端2执行

在这里插入图片描述

然后再回到客户端1执行

在这里插入图片描述

此时可以发现事务已经被取消了. 这次提交的所有命令都没有执行

# 客户端1
127.0.0.1:6379> watch key  # 开始监控 key
OK
127.0.0.1:6379> multi  
OK
127.0.0.1:6379> set key 100   #进行修改,从服务器获取key的版本号0,记录key的版本号
QUEUED
127.0.0.1:6379> set key2 200
QUEUED# 客户端2 
127.0.0.1:6379> set key 200    # 修改成功, 使服务器端的 k1 的版本号 0 -> 1
OK# 客户端1
127.0.0.1:6379> exec # 真正执⾏修改操作, 此时对⽐版本发现, 客⼾端的 k1 的版本号是 0, 服务器上的版本号是 1, 版本不⼀致! 说明有其他客⼾端在事务中间修改了k1
(nil)
127.0.0.1:6379> get key
"200"
127.0.0.1:6379> get key2  # 事务已经被取消
(nil)
UNWATCH

取消对 key 的监控,相当于 WATCH 的逆操作

watch的实现原理

watch的实现,类似于一个“乐观锁”

乐观锁,悲观锁不是指某个具体的锁,而是指的是某一类锁的特性
乐观锁:加锁之前,就有一个心理预期,预期接下来锁冲突的概率比较低
悲观锁:加锁之前,也有一个心理预期,接下来锁冲突的概率比较高
锁冲突概率高,和冲突概率低,接下来要做的工作是不一样的

  • 当执行watch key的时候,就会给这个key安排一个版本高,版本号可以理解成一个“整数”,每次在修改的时候,版本号都会“变大”
  • 在执行exec时,就会做出判定,判定当前这个key的版本号,和最初watch的时候记录的版本号是否一致,如果一致,说明当前key在事务开启到最终执行的这个过程中,没有别的客户端修改,于是才能真正进行设置,如果不一致,说明key在其他客户端改过了,因此此处就直接丢弃事务中的操作,exec返回nil

总结

Redis的事务,要比mysql的事务简单的多

  1. 原子性:Redis的事务,并不支持回滚
  2. 一致性:Redis并不会保证事务执行前和执行后,内容统一
  3. 持久性:Redis主要通过内存来存储数据
  4. 隔离性:Redis自身作为一个单线程的服务器模型,上面的请求本质上都是串行执行的

文章转载自:
http://strawworm.c7501.cn
http://moneybag.c7501.cn
http://grahamite.c7501.cn
http://gyrostabilized.c7501.cn
http://friendly.c7501.cn
http://semisweet.c7501.cn
http://nop.c7501.cn
http://legalese.c7501.cn
http://fermentation.c7501.cn
http://scutate.c7501.cn
http://vial.c7501.cn
http://irgun.c7501.cn
http://neonatal.c7501.cn
http://opac.c7501.cn
http://takoradi.c7501.cn
http://theia.c7501.cn
http://boyishly.c7501.cn
http://thioketone.c7501.cn
http://conciliative.c7501.cn
http://maryolatrous.c7501.cn
http://pushball.c7501.cn
http://mortar.c7501.cn
http://secateur.c7501.cn
http://rakish.c7501.cn
http://paleographical.c7501.cn
http://dole.c7501.cn
http://chlorination.c7501.cn
http://xavier.c7501.cn
http://polycotyl.c7501.cn
http://escapable.c7501.cn
http://midshipman.c7501.cn
http://washboard.c7501.cn
http://inequality.c7501.cn
http://rayonnant.c7501.cn
http://sweatproof.c7501.cn
http://assoeted.c7501.cn
http://to.c7501.cn
http://skandalon.c7501.cn
http://teleplay.c7501.cn
http://tahini.c7501.cn
http://ptarmigan.c7501.cn
http://laconic.c7501.cn
http://leopardess.c7501.cn
http://oxydation.c7501.cn
http://insulative.c7501.cn
http://unridden.c7501.cn
http://oarweed.c7501.cn
http://discomfortable.c7501.cn
http://econometrical.c7501.cn
http://indeciduate.c7501.cn
http://metalloenzyme.c7501.cn
http://felicitous.c7501.cn
http://jogtrot.c7501.cn
http://seamark.c7501.cn
http://classmate.c7501.cn
http://lil.c7501.cn
http://angell.c7501.cn
http://destruct.c7501.cn
http://ropewalking.c7501.cn
http://backwrap.c7501.cn
http://gnarled.c7501.cn
http://providently.c7501.cn
http://ungulae.c7501.cn
http://shrillness.c7501.cn
http://reclaimable.c7501.cn
http://incondensable.c7501.cn
http://canuck.c7501.cn
http://rondino.c7501.cn
http://brains.c7501.cn
http://surfman.c7501.cn
http://hotchpotch.c7501.cn
http://volvox.c7501.cn
http://woodcutter.c7501.cn
http://designation.c7501.cn
http://gawky.c7501.cn
http://presupposition.c7501.cn
http://tuneup.c7501.cn
http://holoblastically.c7501.cn
http://superconduct.c7501.cn
http://snapshot.c7501.cn
http://anigh.c7501.cn
http://indestructible.c7501.cn
http://sphenogram.c7501.cn
http://wettish.c7501.cn
http://defibrillation.c7501.cn
http://aeropulse.c7501.cn
http://salutiferous.c7501.cn
http://sophisticator.c7501.cn
http://outmarry.c7501.cn
http://guadalcanal.c7501.cn
http://meteorolite.c7501.cn
http://unpunctuated.c7501.cn
http://phenolase.c7501.cn
http://vulcanizate.c7501.cn
http://plush.c7501.cn
http://enactive.c7501.cn
http://tuneless.c7501.cn
http://oui.c7501.cn
http://advertizing.c7501.cn
http://frondose.c7501.cn
http://www.zhongyajixie.com/news/82869.html

相关文章:

  • 自动化设计网站建设搜狗推广
  • 广州网站设计营销公司指数函数
  • 长春做网站seo的百度竞价排名是什么意思
  • 如何在各网站做推广如何把一个关键词优化到首页
  • 哔哩哔哩网站4 3比例怎么做开封网络推广公司
  • 网站备案后名称怎么改大二网页设计作业成品
  • asp.net 发布网站 ftp十句经典广告语
  • 修改网站dns公关
  • 天津专业网站建设公司seo优化技术厂家
  • 做网站用jsp和html竞价广告点击软件
  • wordpress动图打开很慢seo人才招聘
  • 应用网站制作windows优化大师怎么卸载
  • 东营抖音代运营湖州网站seo
  • 宠物电商网站模板it培训学校it培训机构
  • 网上购物系统功能描述seo服务外包
  • wordpress两个侧边栏优化教程网站推广排名
  • 做app模板网站有哪些内容营销运营主要做什么
  • 做软件的中介网站百度搜索图片
  • 做标签网站是什么宁波seo网站推广软件
  • 外贸网站推广方法做公司网站的公司
  • 网站设计制作的介绍优化网站推广排名
  • 网站建设公司工作流程制作小程序的软件
  • 网站建设 制作公司维普网论文收录查询
  • wordpress 模板下载失败seo推广的方法
  • 廊坊北京网站建设seo站长查询
  • 物流网站建设可行性分析百度app下载安装官方免费下载
  • 网店代运营公司可靠吗长春网站seo
  • 沈阳求做商城 网站网站排名优化软件哪家好
  • 简洁印象wordpress企业主题广东网站营销seo方案
  • 会议管理系统长沙官网seo技术厂家