最近在读黄健宏的《Redis设计与实现》,现在看到了事务这章,由于之前(上学)没有好好整理过数据库事务的四大性质,导致现在(工作)看到了就和第一次知道一样((lll¬ω¬))。还是要把基础打好,以后一定要多多整理基础知识。

redis本质上也是一个数据库,它在内存中以键值对的形式操作数据。所以与传统的关系型数据库还是有一定不同的,但在这里,我忽略具体机制的不同,只抽取事务这块,对它的性质进行简单的描述。

在传统的关系型数据库中,常常用ACID性质来检验事务功能的可靠性和安全性。

事务提供了一种将命令打包,然后一次性、有序地执行的机制。

1、原子性(Atomicity)

事务具有原子性指的是,数据库将事务中的多个操作当作一个整体来执行,服务器要么执行事务中的所有操作,要么一个操作也不执行。

拿redis的事务功能来说,事务队列中的命令要么全部执行,要么就一个都不执行,因此redis的事务是具有原子性的。

redis事务与传统关系型数据库事务的最大区别在于,redis不支持事务回滚机制,即使事务队列中的某个命令在执行期间出现了错误,整个事务也会继续执行下去,直到将事务队列中的所有命令都执行完毕为止。

2、一致性(Consistency)

事务具有一致性指的是,如果数据库在执行事务前是一致的,那么在执行事务后,无论事务是否执行成功,数据库也应该是一致的。一致指的是数据符合数据库本身的定义和要求,没有包含非法或无效的错误数据。

3、隔离性(Isolation)

事务的隔离性指的是,即使数据库中有多个事务并发地执行,各个事务之间也不会互相影响,并且在并发状态下执行的事务和串行执行的事务产生的结果完全相同。

因为redis使用单线程的方式执行事务(以及事务队列中的命令),并且服务器保证在执行事务期间不会对事务进行中断,因此redis的事务总是以串行的方式运行的,并且事务也总是具有隔离性的。

4、耐久性(Durability)

事务的耐久性指的是,当一个事务执行完毕时,执行这个事务的结果已经被保存在永久性存储介质中了,即使服务器在事务执行完毕后停机,执行事务所得的结果也不会丢失。

因为redis的事务不过是简单地用队列包裹起了一组redis命令,redis并没有为命令提供额外的持久化功能,所以redis事务的耐久性由redis所使用的持久化模式决定(AOF&appendfsync=always可以实现事务持久化)。

事务的ACID性质的更多相关文章

  1. 深入理解大数据之——事务及其ACID特性

    目录 事务简介 事物的定义 事务的目的 事务的状态 事务的ACID属性 ACID简介 原子性(Atomicity) 一致性(Consistency) 隔离性(Isolation) 持久性(Durabi ...

  2. 数据库的事务、ACID及隔离级别

    事务 所谓事务是用户定义的一个数据库操作序列,这些操作要么全做,要么不做,是一个不可分割的工作单位.例如,在关系数据库中,一条或一组SQL语句.整个程序都可以是一个事务. 事务和程序是两个概念,一个程 ...

  3. 深入学习MySQL事务:ACID特性的实现原理

    事务是MySQL等关系型数据库区别于NoSQL的重要方面,是保证数据一致性的重要手段.本文将首先介绍MySQL事务相关的基础概念,然后介绍事务的ACID特性,并分析其实现原理. MySQL博大精深,文 ...

  4. MySQL事务及ACID特性

    一.事物 1.定义:事务是访问和更新数据库的程序执行单元,事务中包含一条或者多条SQL语句,这些语句要么全部执行成功,要么都不执行. 在MySQL中,事务支持是在引擎层实现的,MySQL是一个支持多引 ...

  5. 事务的ACID属性,图解并发事务带来问题以及事务的隔离级别

    事务的概述 事务是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行. 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源.通过将一组相关操作组 ...

  6. 分布式事务?咱先弄明白本地事务再说 - ACID

      过去一段时间面试的同学,对于数据库事务,可以按照配置正常使用,但很多都无法讲清楚和理解数据库事务这个东西真正的意义,以及互联网兴起以后,当今数据库在ACID面前面临怎样的问题和抉择. 事务,是各大 ...

  7. 事务的ACID和四个隔离级别

    在实际的业务场景中,并发读写引出了和事务控制的需求.优秀的事务处理能力是关系型数据库(特别是oracle等商用RDBMS)相对于正当风口的NoSQL数据库的一大亮点.但这也从另一方面说明了事务控制的复 ...

  8. 14.2 事务的ACID属性

    14.2 事务的ACID属性正在更新内容.请稍后

  9. Oracle事务的ACID特性

    Oracle事务的ACID特性 1.原子性(Atomicity) 事务的原子性是指事务中包含的所有操作要么都做,要么都不做,保证数据库是一致的. 例如:A帐户向B帐户划账1000,则先将A减少1000 ...

随机推荐

  1. Solr 访问 403 错误

    把 Solr 基础环境搭建好后访问发现会出现 403 错误: 解决方法: 找到自己 Tomcat 目录下的 solr ,找到  ...\solr\WEB-INF\web.xml,然后把 169 - 1 ...

  2. SQL server Profiler 监视数据库活动

    做网站后台开始时需要考虑后台对数据库的一些操作,比如尽量减少查询次数,尽快释放连接,只选取必须的字段等等.如果是用三层开发,复杂的项目中直接拼装SQL语句多一点,拼装的SQL语句可以直接在SQL se ...

  3. 简明log4j配置教程

    先准备好log4j需要对应的开发包: apache-log4j-extras-1.2.17.jar slf4j-api-1.6.1.jar slf4j-log4j12-1.6.1.jar 然后就是在项 ...

  4. IDEA中的git更新项目

    1.先pull 2.在add 3. 最后

  5. TCP/IP 基础简介

    引言本篇属于TCP/IP协议的基础知识,重点介绍了TCP/IP协议簇的内容.作用以及TCP.UDP.IP三种常见网络协议相关的基础知识. 内容TCP/IP协议簇是由OSI七层模型发展而来的,之所以存在 ...

  6. Codeforces35E(扫描线)

    E. Parade time limit per test:2 seconds memory limit per test:64 megabytes input:input.txt output:ou ...

  7. Code Signal_练习题_depositProfit

    You have deposited a specific amount of money into your bank account. Each year your balance increas ...

  8. JS简单验证

    1.验证是否全为数字 2.验证邮箱 3验证手机号 4.验证身份证号 5.验证时间格式 下面是代码,可直接用,有注释 <html> <meta charset="utf-8& ...

  9. form图片上传遇到错误

    org.springframework.web.multipart.MultipartException: The current request is not a multipart request ...

  10. element-ui button组件 radio组件源码分析整理笔记(一)

    Button组件 button.vue <template> <button class="el-button" @click="handleClick ...