栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

认识 Redis 事务命令 与 乐观锁(三)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

认识 Redis 事务命令 与 乐观锁(三)

文章目录:
        • 一、什么是事务:
        • redis 事务的本质是一组命令的集合,一个事务中所有的命令都会被序列化,在事务的执行顺序中,会安照顺序执行!
        • 事务操作的命令:
        • 命令行实战:
        • 二、乐观锁
          • 使用watch 监控 key。
          • 操作成功: 单线程
        • 实现乐观锁操作:多线程

一、什么是事务:
事务是指一系列操作步骤,这一系列的操作步骤,要么完全地执行,要么完全地不执行。

Redis 中的事务(transaction)是一组命令的集合,至少是两个或两个以上的命令,redis 事务保证这些命令被执行时中间不会被任何其他操作打断。

redis 事务的本质是一组命令的集合,一个事务中所有的命令都会被序列化,在事务的执行顺序中,会安照顺序执行!

一次性、顺序性、排他性,执行一些列的命令。

redis 事务没有隔离级别的概念。
所有的命令在事务中,并没有直接被执行!而是只有发起执行命令的时候,才会执行。(exec)
redis 单条命令是保证原子性的,但是事务不保证原子性。

事务操作的命令:

● multi

语法: multi

作用:标记一个事务的开始。事务内的多条命令会按照先后顺序被放进一个队列当中。返回值:总是返回 ok

● 命令入队(…)

● exec

语法:exec

作用:执行所有事务块内的命令

返回值:事务内的所有执行语句内容,事务被打断(影响)返回 nil

命令行实战:

● discard

语法:discard

作用:取消事务,放弃执行事务块内的所有命令返回值:总是返回 ok

● watch

语法:watch key [key …]

作用:监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动, 那么事务将被打断。

返回值:总是返回 ok

● unwatch

语法:unwatch

作用:取消 WATCH 命令对所有 key 的监视。如果在执行 WATCH 命令之后, EXEC 命令或 DISCARD 命令先被执行了的话,那么就不需要再执行 UNWATCH 了

返回值:总是返回 ok

  • 事务的实现
    ● 正常执行事务

事务的执行步骤: 首先开启事务, 其次向事务队列中加入命令,最后执行事务提交

例 1:事务的执行:

1、multi : 用 multi 命令告诉 Redis,接下来要执行的命令你先不要执行,而是把它们暂时存起来 (开启事务)

2、sadd works john 第一条命令进入等待队列(命令入队)

3、sadd works rose 第二条命令进入等待队列(命令入队)

4、exce 告知 redis 执行前面发送的两条命令(提交事务)

二、乐观锁 使用watch 监控 key。

悲观锁:

很悲观,认为什么时候都会出现问题,无论做什么都会加锁。

乐观锁:

很乐观,任务什么时候都不会出现问题,所以不会上锁,更新数据的时候判断一下,在此期间有人更新数据是不管的。

  • 获取版本
  • 更新的时候比较版本
操作成功: 单线程

实现乐观锁操作:多线程

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/301128.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号