首页 > 数据库 >学习笔记——redis事务、乐观锁、悲观锁

学习笔记——redis事务、乐观锁、悲观锁

时间:2023-01-29 19:56:59浏览次数:44  
标签:事务 key redis 笔记 乐观 命令 悲观 执行

2023-01-29

一、redis事务与乐观锁相关命令

1、redis事务

(1)redis事务的含义

redis事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序执行。事务在执行过程中,不会被其他客户端送来的命令请求所打断。

(2)redis事务的作用

redis事务的主要作用就是串联多个命令防止别的命令插队。

2、multi、exec、discard

(1)multi:组队命令,之后使用“set key value”的命令

(2)exec:将输入的“set key value”的命令依次进行执行

(3)discard:放弃组队

3、悲观锁(Pessimistic Lock)

即每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样其他人想拿这个数据就会block直到它拿到锁。

传统的关系型数据库里面就用到了很多这个锁机制,比如行锁、表锁等,读锁,写锁等,都是在做操作之前先上锁。

4、乐观锁(Optimistic Lock)

即每次去拿数据的时候都认为别人不会修改,所以不会上锁,单是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号等机制。

乐观锁使用于多读的应用类型,这样可以提高吞吐量。Redis就是利用这种check-and-set机制实现事务的。

5、watch key

在执行multi之前,先执行watch key1[key2],可以监视一个(或多个)key,如果在事务执行之前这个(或这些)key被其他命令所改动,那么事务将被打断。

 

 5、redis事务三特性

(1)单独的隔离操作

事务中的所有命令都会序列化、按顺序地执行。事务在执行过程中,不会被其他客户端发送来的命令请求所打断。

(2)没有隔离级别的概念

队列中的命令没有提交之前都不会被执行,因为事务提交前任何指令都不会被实际执行。

(3)不保证原子性

事务中如果有一条命令执行失败,其他命令仍然会被执行,没有回滚。

 二、应用场景

1、使用乐观锁解决超卖问题。

2、使用连接池解决超时问题

3、使用LUA脚本解决库存遗留问题

标签:事务,key,redis,笔记,乐观,命令,悲观,执行
From: https://www.cnblogs.com/isDaHua/p/17069722.html

相关文章

  • .net core 使用redis
    参照:.NET6使用Redis-Lulus-博客园(cnblogs.com)九、.netcore(.NET6)添加通用的Redis功能-WeskyNet-博客园(cnblogs.com)......
  • 1.29数论课笔记
    o.O一、\(O(\sqrt{n})\)判断质数枚举\(\left[2,\sqrt{n}\right]\)中的数,判断是否能整除\(n\),如果都没有则返回\(true\)。为什么不用枚举\(\sqrt{n}\)以上的数:......
  • [概率论与数理统计]笔记:4.4 抽样分布
    4.4抽样分布正态总体的抽样分布关注点:总体是正态分布,抽样,样本所构造的统计量的分布的相关研究。单正态总体的抽样分布定理正态总体\(X\simN(\mu,\sigma^2)\),\((X_1,......
  • MATLAB笔记[6]-Modbus-RTU通信
    保命声明:笔者代码能力有限,若行文中有错漏之处欢迎大家指出。RS485总线工业现场经常要采集多点数据,模拟信号或开关信号,一般用到RS485总线,RS-485采用半双工工作方式,支持多......
  • redis的简易哨兵模式
    某一天突然收到通知说redis的服务器挂了,因为是支付服务用到的redis,所以赶紧去查一下对服务流程有没有影响,结果是一切正常,松了一口气。后面看了一下代码发现里面自己封装的......
  • 《深度学习入门 基于Python的理论与实现》书中代码笔记
    源码笔记【仅为个人笔记记录】第三章sigmoid函数#coding:utf-8importnumpyasnpimportmatplotlib.pylabaspltdefsigmoid(x):return1/(1+np.exp(-x))X......
  • SpringBoot中配置Redis
    SpringBoot中整合Redis缓存背景:工作中需要用到缓存之前都是用ConcurrentHashMap公司不让用redis那我就小试牛刀一下前端的App、网页在登录时,或是用户在进行一些敏感......
  • 【课程笔记】算法分析笔记-第一章
    目录前言Hello!非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出~ 自我介绍ଘ(੭ˊᵕˋ)੭昵称:海轰标签:程序猿|C++选手|学生简介:因C语言结识编程,随后转入计算机......
  • CSS笔记
    选择器基础选择器基础选择器由单个选择器组成,基础选择器又包括标签选择器、类选择器、id选择器和通配符选择器标签选择器,按照标签名称分类,例如:p类选择器,按照类名分......
  • HTML笔记
    DOCTYPE用来声明文档类型,作用就是告诉浏览器使用那种HTML版本来显示网页,必须写在文件第一行<!DOCTYPEhtml>html标签属性lang用来定义当前文档的语言<htmllan......