Redis事务

Redis的事务是通过multi、exec、discard和watch这四个命令来完成的。

Redis的单个命令都是原子性的,所以这里需要确保事务性的对象是命令集合。

Redis将命令集合序列化并确保处于同一事务的命令集合连续且不被打断的执行

Redis不支持回滚操作

事务命令

multi:用于标记事务块的开始,Redis会将后续的命令逐个放入队列中,然后使用exec原子化地执行这个命令队列

exec:执行命令队列

discard:清除命令队列

watch:监视key

unwatch:清除监视key

127.0.0.1:6379> multi
OK
127.0.0.1:6379> set s1 222
QUEUED
127.0.0.1:6379> hset set1 name zhangfei
QUEUED
127.0.0.1:6379> exec
1) OK
2) (integer) 1
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set s2 333
QUEUED
127.0.0.1:6379> hset set2 age 23
QUEUED
127.0.0.1:6379> discard
OK
127.0.0.1:6379> exec (error) ERR EXEC without MULTI
127.0.0.1:6379> watch s1
OK
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set s1 555
QUEUED
127.0.0.1:6379> exec # 此时在没有exec之前,通过另一个命令窗口对监控的s1字段进行 修改
(nil)
127.0.0.1:6379> get s1
222
127.0.0.1:6379> unwatch
OK

watch命令

总结: 
 1.开启MULTI事务 存储各个命令 输入exec 则执行存储的命令 在没输入exec时输入discard 则中断事务.
 2.开启MULTI事务之前输入wacth命令,如果中途有其他线程修改了wacth key中所在的value值,则此项事务会提交失败,这就是用wacth做的乐观锁.

Redis的弱事务性

1.如果开启MULTI事务,你一旦有一条命令出现语法错误,redisClient将flags置为REDIS_DIRTY_EXEC,EXEC命令将会失败返回。
2.在事务中,如果你输入两条冲突语句 比如1. set m1 55   2.lpush m1 1 2 3  然后exec 结果是第一条执行成功第二条失败,所以事务并不能实现事务的原子性,要么全成功,要么全失败.
3.不支持回滚-------1、大多数事务失败是因为语法错误或者类型错误,这两种错误,在开发阶段都是可以预见的
                                 2、Redis为了性能方面就忽略了事务回滚。 (回滚记录历史版本)

Redis事务Multi介绍相关推荐

  1. 关于Redis事务的介绍

    目录 一.Redis事务的本质 二.事务的操作命令 三.不存在原子性 三.不存在隔离性 四.乐观锁 一.Redis事务的本质 Redis事务的本质是一组命令的集合,相当于一个队列,一个事务中的的所有命 ...

  2. 天道酬勤系列之Redis 事务的介绍与实例使用

    Redis 事务 Redis 事务可以一次执行多个命令, 并且带有以下三个重要的保证: 批量操作在发送 EXEC 命令前被放入队列缓存. 收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其 ...

  3. Redis事务、MULTI 命令和EXEC 命令

    Redis事务 文章目录 Redis事务 事务实例 MULTI 命令 EXEC 命令 事务异常 1. 进入队列之前发生错误 Redis 是没有回滚操作的 Watch 命令 执行 watch 命令,不执 ...

  4. python redis事务_python redis事务源码及应用分析

    在多个客户端同时处理相同的数据时,不谨慎的操作很容易导致数据出错.一般的关系型数据库中有事务保证了数据操作的原子性,同样Redis中也设置了事务,可以理解为"将多个命令打包,然后一次性.按顺 ...

  5. 面试问到 Redis 事务,我脸都绿了。。

    前言 前几天有读者说自己面试被问到Redis的事务,虽然不常用,但是面试竟然被问到,平时自己没有注意Redis的事务这一块,面试的时候被问到非常不好受. 虽然,这位读者面试最后算是过了,但是薪资方面没 ...

  6. 事务例子_Redis事务系列之一Redis事务详解

    一.前言 本章是redis事务系列知识第一章,redis事务系列主要讲解以下内容: redis 事务 redis乐观锁讲解 redis乐观锁实现秒杀 我们一步一步来,本章主要讲解事务. 二.事务 2. ...

  7. redis setnx原子性_不支持原子性的 Redis 事务也叫事务吗?

    文章收录在 GitHub JavaKeeper ,N线互联网开发必备技能兵器谱 假设现在有这样一个业务,用户获取的某些数据来自第三方接口信息,为避免频繁请求第三方接口,我们往往会加一层缓存,缓存肯定要 ...

  8. redis怎么修改_面试官问我Redis事务,还问我有哪些实现方式

    ❝ 「第12期」 距离大叔的80期小目标还有68期,今天大叔要跟大家分享的内容是 -- Reids中的事务.同样,这也是redis中重要指数为四颗星的必备基础知识点.下面一起来了解一下吧. ❞ 相信大 ...

  9. Redis事务和分布式锁

    Redis事务 Redis中的事务(transaction)是一组命令的集合.事务同命令一样都是Redis最小的执行单位,一个事务中的命令要么都执行,要么都不执行.Redis事务的实现需要用到 MUL ...

最新文章

  1. vba与MySQL交互_Excel、VBA与MySQL交互
  2. 使用结构、数组、循环和DataGridView写的分数统计小程序
  3. github不用输入用户密码即可登录
  4. 互联网1分钟 |1022
  5. python-字符串·文件·集合操作
  6. Java中gatSum方法是什么_Oracle中的SUM用法讲解
  7. operator 模块详解
  8. 一淘网发声明否认胁迫导航网站合作
  9. nosqlbooster pojie
  10. CentOS域名解析失败
  11. Rust学习教程32 - 动态数组Vec
  12. echarts(一)之地图连线动效
  13. cae属于计算机技术吗,CAE、CAD、CAPP与CAM的区别——扫盲贴
  14. 项目案例之GitLab的数据迁移
  15. 检测android app是否在白名单内
  16. 想清楚干点什么,比怎么干更重要--Leo读 不是孙振耀写的职场感言 2
  17. 计算机在机械设制造中的应用实例,机械设计与制造毕业设计一体化分析
  18. LeetCode 1.Minimum Path Sum 2.Unique Paths I and II
  19. 在使用SigmaStudio对ADAU1452做开发的时候,如何判断自己的程序是否已经正确的下载到DSP中运行?
  20. 目前互联网最详细的5G注册流程

热门文章

  1. Unity3D Update() 和 FixedUpdate()区别--unity3Dday02
  2. 合作伙伴最怕的是什么_朋友合伙做生意的十大禁忌
  3. co_routine.h分析
  4. 钉钉微应用 - - - - 如何本地开发调试
  5. 【使用场景】巧用ip代理解决爬虫运行被封锁被限制的难题
  6. 关于Mantel Test
  7. 磁盘 扇区 柱面 linux,磁盘的基本知识:磁道、柱面和扇区
  8. 2020年中国食用菌产值产量及出口分析,食用菌工厂化是大趋势「图」
  9. 突发公共卫生事件3D 可视化 | 新冠肺炎案例
  10. 开源项目 rails4scm 软件配置管理