1.事务

1.1 概述

Redis中的事务(transaction)是一组命令的集合。事务同命令一样都是Redis的最小执行单位, 一个事务中的命令要么都执行,要么都不执行 。

事务的应用非常普遍,如银行转账过程中A给B汇款,首先系统从A的账户中将钱划走,然后向B的账户增加相应的金额。这两个步骤必须属于同一个事务,要么全执行,要么全不执行。否则只执行第一步,钱就凭空消失了,这显然让人无法接受。

事务的原理是先将属于一个事务的命令发送给Redis,然后再让Redis依次执行这些命令。

例如:

redis>MULTI

OK

redis>SADD "user:1:following" 2

QUEUED

redis>SADD "user:2:followers" 1

QUEUED

redis>EXEC

1) (integer) 1

2) (integer) 1

上面的代码演示了事务的使用方式。

(1)首先使用MULTI命令告诉Redis:“下面我发给你的命令属于同一个事务,你先不要执行,而是把它们暂时存起来。”Redis回答:“OK。”

(2)而后我们发送了两个SADD命令来实现关注和被关注操作,可以看到Redis遵守了承诺,没有执行这些命令,而是 返回QUEUED表示这两条命令已经进入等待执行的事务队列 中了。

(3)当把所有要在同一个事务中执行的命令都发给Redis后,我们 使用EXEC命令告诉Redis将等待执行的事务队列中的所有命令

php redis事务,Redis中事务的使用详解相关推荐

  1. Redis - CLUSTER命令中槽管理命令详解

    文章目录 导图 全文 导图 全文 都梳理好了,全文 请戳这里

  2. 深入剖析Redis系列(三) - Redis集群模式搭建与原理详解

    前言 在 Redis 3.0 之前,使用 哨兵(sentinel)机制来监控各个节点之间的状态.Redis Cluster 是 Redis 的 分布式解决方案,在 3.0 版本正式推出,有效地解决了 ...

  3. MySQL锁、事务隔离级别、MVCC机制详解、间隙锁、死锁等

    一. 简介 1. 锁定义 锁是计算机协调多个进程或线程并发访问某一资源的机制. 在数据库中,除了传统的计算资源(如CPU.RAM.I/O等)的争用以外,数据也是一种供需要用户共享的资源.如何保证数据并 ...

  4. java多线程中的join方法详解

    java多线程中的join方法详解 方法Join是干啥用的? 简单回答,同步,如何同步? 怎么实现的? 下面将逐个回答. 自从接触Java多线程,一直对Join理解不了.JDK是这样说的:join p ...

  5. python 消息队列 get是从队首还是队尾取东西_python分布式爬虫中消息队列知识点详解...

    当排队等待人数过多的时候,我们需要设置一个等待区防止秩序混乱,同时再有新来的想要排队也可以呆在这个地方.那么在python分布式爬虫中,消息队列就相当于这样的一个区域,爬虫要进入这个区域找寻自己想要的 ...

  6. spring(7)---深入理解Spring核心技术——Spring中的各模块详解

    深入理解Spring核心技术--Spring中的各模块详解 Spring框架的两个基本概念IOC容器和AOP,相信大家现在对Spring中的这两个部分的基本概念有了一定的认识,好了,那么今天我们就来正 ...

  7. mysql binlog event_MySQL binlog中的事件类型详解

    MySQL binlog记录的所有操作实际上都有对应的事件类型的,譬如STATEMENT格式中的DML操作对应的是QUERY_EVENT类型,ROW格式下的DML操作对应的是ROWS_EVENT类型. ...

  8. CC#中List用法介绍详解学习通http://www.bdgxy.com/roundWorker类用法总结学习通http://www.bdgxy.com/

    文章来源: 学习通http://www.bdgxy.com/ 普学网http://www.boxinghulanban.cn/ 智学网http://www.jaxp.net/ 表格制作excel教程h ...

  9. dapper mysql 预处理_.Net Core中Dapper的使用详解

    Dapper 是一个轻量级ORM框架,在项目中如果对性能比较看中,Dapper是一个不错的选择.接下来我们就来看看如何在项目中使用Dapper. 1.安装Dapper 这里直接使用Nuget安装. 安 ...

  10. python 消息队列 flask_python分布式爬虫中消息队列知识点详解

    当排队等待人数过多的时候,我们需要设置一个等待区防止秩序混乱,同时再有新来的想要排队也可以呆在这个地方.那么在python分布式爬虫中,消息队列就相当于这样的一个区域,爬虫要进入这个区域找寻自己想要的 ...

最新文章

  1. android中常用的快捷键
  2. python3中的int类型占64位_在windows 10 64位计算机中,默认情况下,numpy数组数据类型将以int32形式出现...
  3. slim.flatten——将输入扁平化但保留batch_size,假设第一维是batch
  4. boost::exception_detail::refcount_ptr的测试程序
  5. 数据库-多表查询-笛卡尔积
  6. 【安全】一名安全数据科学家的日常生活
  7. windows 7 提示缺少D3DCOMPILER_47.dll的正确解决方法
  8. EasyRTMP实现对接海康、大华等IPCamera SDK进行RTMP推送直播功能
  9. ASP.NET中的图片缓存
  10. java完全自学手册txt下载
  11. 达梦数据库学习之备份还原
  12. 项目管理十大知识领域和五大过程
  13. Hcse 交换知识点-1
  14. 垃圾邮件过滤python_手把手教你用Python 和 Scikit-learn 实现垃圾邮件过滤
  15. linux yum clean up,在CentOS系统中使用package-cleanup清除旧内核
  16. Interactive Path Reasoning on Graph for Conversational Recommendation阅读笔记
  17. Win10任务栏卡死解决方案
  18. LeetCode: 868. Binary Gap
  19. 新时代动画电影的互联网宣传
  20. 分享:从编程中悟出的八字箴言

热门文章

  1. 华为云从入门到实战 | AI云开发ModelArts入门与WAF应用与部署
  2. 糖尿病遗传风险检测挑战赛-Coggle 30 Days of ML
  3. 数据库调优的方法有那些
  4. Java NIO全面详解(看这篇就够了)
  5. 计算机基础知识办公自动化视频教程,计算机办公自动化应用基础教程.pdf
  6. QQ影音文件无法渲染
  7. 「业务架构」通过设计实现业务模型架构
  8. 基于android的通讯录,基于Android的通讯录管理系统.doc
  9. 重磅干货 | 带你深入解读:全栈测试开发工程师
  10. 【Android】【IDE】解决android-studio或IntelliJ-IDEA搜索不到文件内容的问题