2021-01-30

Redis-第六章节-事务

目录

  • 简介
  • 执行过程
  • 特点
  • 案例
  • watch

简介

事务(Transaction),一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。

执行过程

开始事务 -> 命令入队 -> 执行事务。

特点

① 批量操作在发送 exec 命令前被放入队列缓存。
② 收到exec命令后进入事务执行,事务中任意命令执行失败,其余的命令依然会被执行。
③ 在事务的执行过程中,其他客户端提交的命令请求不会插入到事务执行命令的序列中。

案例:

  • (1)正常执行

     localhost:6379> multi OK localhost:6379> set a 1111 QUEUED localhost:6379> set b 2222 QUEUED localhost:6379> set c 3333 QUEUED localhost:6379> set d 4444 QUEUED localhost:6379> exec 1) OK 2) OK 3) OK 4) OK
  • (2)取消事务

     localhost:6379> multi OK localhost:6379> set e 55555 QUEUED localhost:6379> set f 66666 QUEUED localhost:6379> discard OK localhost:6379> exec (error) ERR EXEC without MULTI
  • (3)编译型错误
    redis-error
    最后执行exec命令之后,会执行队列中的命令,队列中命令有失败的,所以最后整个命令都执行失败。
    编译型异常代码有问题,命令有错,事务中所有的命令都不会被执行。

  • (4)运行时错误

     localhost:6379> set a qqqq OK localhost:6379> multi OK localhost:6379> incr a QUEUED localhost:6379> set b 1111 QUEUED localhost:6379> set c 2222 QUEUED localhost:6379> set d 3333 QUEUED localhost:6379> exec 1) (error) ERR value is not an integer or out of range 2) OK 3) OK 4) OK localhost:6379> keys * 1) "a" 2) "c" 3) "b" 4) "d"

    如果事务队列存在语法错误,那么执行命令的时候,其他命令是可以正常执行的,错误命令抛出异常。

watch

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

  • 监控a时,a被修改
     //客户端1 localhost:6379> set a 1111 OK localhost:6379> WATCH a OK localhost:6379> MULTI OK localhost:6379> set a 2222 QUEUED localhost:6379> exec (nil) //客户端2 127.0.0.1:6379> set a 567 OK
  • 正常watch
     localhost:6379> set a 1111 OK localhost:6379> WATCH a OK localhost:6379> MULTI OK localhost:6379> set b 222 QUEUED localhost:6379> set c 333 QUEUED localhost:6379> set d 444 QUEUED localhost:6379> exec 1) OK 2) OK 3) OK localhost:6379> keys * 1) "a" 2) "c" 3) "b" 4) "d"








原文转载:http://www.shaoqun.com/a/521200.html

跨境电商:https://www.ikjzd.com/

邮乐网购物商城:https://www.ikjzd.com/w/1776

camel:https://www.ikjzd.com/w/331.html


目录简介执行过程特点案例watch简介事务(Transaction),一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。执行过程开始事务->命令入队->执行事务。特点①批量操作在发送exec命令前被放入队列缓存。②收到exec命令后进入事务执行,事务中任意命令执行失败,其余的命令依然会被执行。③在事务的执行过程中,其他客户端提
折扣网:折扣网
beien:beien
谷歌指南:什么样的页面才是高质量的?:谷歌指南:什么样的页面才是高质量的?
口述:我未婚先孕被小姑子骂成荡妇:口述:我未婚先孕被小姑子骂成荡妇
思考:"亚马逊效应"的巨大成功带给我们中国电商哪些启示?:思考:"亚马逊效应"的巨大成功带给我们中国电商哪些启示?

No comments:

Post a Comment