IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Redis—事务冲突和解决 -> 正文阅读

[大数据]Redis—事务冲突和解决

事务的冲突场景:

买车票时,票只有一张,但是买票的人有1000个人,冲突就是一千个人都会买到票,但是真实的情况是只能有一个人能支付成功买到车票。

结局方案:

1、悲观锁:

结合场景理解,当一个人买票的时候,其他人都不能进行买票操作。这种锁的机制在传统的关系型数据库中常有体现,比如:行锁、表锁、读锁、写锁等,都是在操作之前先上锁。

2、乐观锁:

结合场景理解,大家都可以抢票,都可以进入付钱,但是只有一个人能支付成功。当一个人支付成功了之后,其他人就无法支付了,这里有一个版本号控制机制,类似于车站的【票已售空】的牌子,开始有一张票的时候,单价都可以去买票,那个时候牌子上面写的是有余票,但是当第一个人已经买了票之后,那个版本号就会更改,也就是牌子上面写票已售空,这时候大家就会检查一下这个版本号,如果和原来的版本号不一样,那么就无法执行买票操作了。

乐观锁不会像悲观锁一样在操作之前加锁,但是在操作之前回去检查一下这个数据是否被更新。

乐观锁适用于多读的类型,这样可以提高吞吐量。

Redis就是利用这种check-and-set机制实现事务的。

乐观锁在Redis中的使用:

命令:watch key [key ...]

在启动事务之前,也就是执行multi之前,先执行watch key [key...] ,可以监视一个或者多个key,如果事务在执行(exec)只之前,这些key被其它命令所改动,那么事务将会被打断。

模拟一个场景:两个事务去操作一个整型的数字k1,都加10,两个事务启动之前,各自都需要使用watch命令将k1监视起来,然后两个事务都可以进入命令队列,但是执行(exec)时,只能时先执行的那个事务可以执行成功,后执行的就会报错。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-11-17 12:49:38  更:2021-11-17 12:50:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 5:17:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码