大家好,今天分享一下Redis基本事务的操作

redis的单个命令是保证原子性,(就是要么一起成功,要么一起失败的)

redis 事务的本质是一组命令的集合,事务支持一次可以执行多个命令,一个事务当中的所有命令被序列化
在事务执行过程,会按照顺序串行化执行队列中的命令,其他客户端提交的命令请求不会插入到事务执行命令序列中。

总结说:redis事务就是一次性、顺序性、排他性的执行一个队列中的一系列命令。

关于 redis数据库的事务和MySQL那样的关系型数据库的区别在于

1.Redis事务没有隔离级别的概念:

2.Redis的事务是不保证原子性:

Redis事务的三个阶段:

1.开始事务(multi

2.命令入队
3.执行事务

Redis事务相关命令:

watch key1 key2 … : 监视一或多个key,如果在事务执行之前,被监视的key被其他命令改动,则事务被打断 ( 类似乐观锁 )

multi : 标记一个事务块的开始( queued )

exec : 执行所有事务块的命令 ( 一旦执行exec后,之前加的监控锁都会被取消掉 )

discard : 取消事务,放弃事务块中的所有命令

unwatch : 取消watch对所有key的监控

开启事务:

127.0.0.1:6379> multi
OK

这个时候,命令已经入队了(这个时候,命令没有被执行)

127.0.0.1:6379> set jishu linux
QUEUED
127.0.0.1:6379> set jishu c++
QUEUED
127.0.0.1:6379> set jishu docker
QUEUED
127.0.0.1:6379> exec    (执行事务)这个时候命令已经被执行了
1) OK
2) OK
3) OK
127.0.0.1:6379>

一个事务只可以被执行一次(看下面)

127.0.0.1:6379> exec
(error) ERR EXEC without MULTI
127.0.0.1:6379>

开启并创建命令对

127.0.0.1:6379> MULTI
OK
127.0.0.1:6379> set jishu czxt
QUEUED
127.0.0.1:6379> set jishu wangluo
QUEUED
127.0.0.1:6379> set jishu kali
QUEUED
127.0.0.1:6379> set jishu go
QUEUED

取消事务(成功)

127.0.0.1:6379> DISCARD
OK
127.0.0.1:6379> get jishu
(nil)
127.0.0.1:6379>

(这个取消一定要在事务没有被执行的时候进行)

队列当中的命令在这种情况下,不会被执行

若在事务队列中存在命令性错误(类似于java编译性错误),则执行EXEC命令时,所有命令都不会执行

27.0.0.1:6379> MULTI
OK
127.0.0.1:6379> SET jishi k8s
QUEUED
127.0.0.1:6379> SET name zhan
QUEUED
127.0.0.1:6379> SET tail  192
QUEUED
127.0.0.1:6379> GETSET tail
(error) ERR wrong number of arguments for 'getset' command
127.0.0.1:6379> set hun jisud
QUEUED
127.0.0.1:6379> set jiso huiweo
QUEUED
127.0.0.1:6379> EXEC
(error) EXECABORT Transaction discarded because of previous errors.
127.0.0.1:6379>

在这种情况下,所有的命令都没有被执行

若在事务队列中存在语法性错误(类似于java的1/0的运行时异常),则执行EXEC命令时,其他正确命令会被执行,错误命令抛出异常。

127.0.0.1:6379> MULTI
OK
127.0.0.1:6379> INCR ji
QUEUED
127.0.0.1:6379> set jishi linux
QUEUED
127.0.0.1:6379> set name zhai
QUEUED
127.0.0.1:6379> get jishu
QUEUED
127.0.0.1:6379> EXEC
1) (integer) 1
2) OK
3) OK
4) (nil)

对的命令可以被执行,错的命令将无法执行

好了,有关于Redis基本事务的操作就到这里了,谢谢大家

Redis基本事务的操作相关推荐

  1. Redis介绍 Java客户端操作Redis

    Redis介绍 && Java客户端操作Redis 本文内容 redis介绍 redis的 shell 客户端简介 redis的 java 客户端简介 环境配置 redis 2.8.1 ...

  2. Redis介绍 Java客户端操作Redis

    分享一下我老师大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow Redis介绍 & ...

  3. Redis的事务:相关命令 watch 与mysql事务的区别

    Redis事务的概念: Redis 事务的本质是一组命令的集合. 事务支持一次执行多个命令,一个事务中所有命令都会被序列化.在事务执行过程,会按照顺序串行化执行队列中的命令,其他客户端提交的命令请求不 ...

  4. Redis之Redis的事务

    1.Redis的事务是什么 Redis 事务的本质是一组命令的集合,事务支持一次执行多个命令,一个事务中所有命令都会被序列化.(redis事务就是一次性.顺序性.排他性的执行一个队列中的一系列命令). ...

  5. Redis 实用技术——事务

    引言 redis的事务不像关系型数据库的事务那样完整. "快"是redis的特征,在事务管理的过程中,使用muti命令开启事务块,当输入多条命令后,再使用exec命令执行事务块中的 ...

  6. redis的事务不是原子性

    一.事务的四大特性 关系型数据库的事务具有四个特性: 1. 原子性 2. 一致性 3. 隔离性 4. 持久性 二.而在我们redis数据库中,事务回事什么样子的呢? 首先我们给出一个定义:redis的 ...

  7. mysql 事务回滚_简短截说阐述redis中事务的使用

    我们知道,在关系型数据库中,比如mysql,如果要使用事务,首先向数据库服务器发送 BEGIN ,然后执行各个相互一致的写操作和读操作,最后,用户可以选择发送 COMMIT 来确认之前所做的修改,或者 ...

  8. Redis——Redis的事务

    Redis的事务 事务简介 事务基本操作 事务的工作流程 事务的注意事项 锁 基于特定条件的事务执行 分布式锁 死锁 事务简介 事务是一个数据库必备的元素,对于redis也不例外,对于一个传统的关系型 ...

  9. Redis教程–事务机制基本介绍

    摘要:Redis是一个简单.高效的内存数据存储,支持多种数据结构.当然,有数据操作的地方往往都少不了事务性,Redis是否支持呢?答案是肯定的.本文将详细讲述如何redis事务使用相关的内,如有错误, ...

最新文章

  1. 多地通知!防止疫情反扑将控制教职工和学生外出,新一轮校园封闭要开始了?...
  2. 使用Nomad构建弹性基础架构: 作业生命周期
  3. 计算机知识培训感言,计算机培训的心得体会
  4. 启动计算机时页面配置出现问题,开机提示“由于启动计算机时出现了页面配置问题…”...
  5. php秒杀框架,yii框架redis结合php实现秒杀效果(实例代码)
  6. mongo 查询显示字段_MongoDB查询操作限制返回字段的方法
  7. rocketmq python消息堆积_编写shell脚本监控rocketMQ消息堆积并推送钉钉
  8. PolSARpro导入外部极化矩阵数据(以高分三号为例,附格式转化代码)
  9. 图形编辑器:对齐功能的实现
  10. PS快速制作凹陷直线
  11. 《数据之美》读书笔记
  12. 解决使用yum安装软件时出现GPG-Key的问题
  13. 使用vue+electron创建桌面软件(一)
  14. redis的使用(转载自:http://www.cnblogs.com/edisonfeng/p/3571870.html)
  15. 程序员公司合作协议范本
  16. 高级面试题 非常 有用
  17. 《机器视觉与算法》学习笔记(一)——图像的采集
  18. 自己如何写mysql数据库_自己手写的一个初始化MySQL数据库的工具!
  19. 一时学习一时爽,持续学习持续爽
  20. word中将标题连同标题前面的点一同放到下一页中

热门文章

  1. SM2263XT贴四片PF29F01T2ANCTH2,SM2263XT量产工具成功开卡
  2. C语言学习之有一个函数: y= x(x<1) 2x-1 (1≤x<10) 3x-11 (x≥10) 写程序,输入x的值,输出y相应的值。
  3. libxml2库函数详解
  4. 微信小程序如何改变icon标签的颜色
  5. LTE----013 UE开机后的第一件事: PLMN选择
  6. Python运行时,提示SyntaxError: invalid syntax怎么解决
  7. Tomcat部署步骤
  8. 当今程序员很厉害?不!那是你不了解上古时期的那些神级操作
  9. 【Linux】WSL
  10. USB学习笔记(3)HID应用分析