Redis 设计与实现 --事务

Posted K战神

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis 设计与实现 --事务相关的知识,希望对你有一定的参考价值。

事务

*ACID,指数据库事务正确执行的四个基本要素的缩写。包含:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)

redis 通过multi  exec  watch 实现事务

  • 事务开始
  • 命令入队
  • 事务执行

 

一、事务开始-- mulit

 

mulit 标志事务开始,将客户端从非事务状态切换到事务状态

# redis-cli
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set sc sc-001QUEUED
127.0.0.1:6379> set sc sc-002QUEUED
127.0.0.1:6379> set sc sc-003QUEUED
127.0.0.1:6379> get scQUEUED
127.0.0.1:6379> exec
1) OK
2) OK
3) OK
4) "sc-003"
127.0.0.1:6379>

二、命令入队

  客户端-非事务状态:输入的命令立即执行

  客户端-事务状态:输入命令exec discard watch mulit 会立即执行,其他不立即执行,而将命令入队等待执行。

三、事务执行--exec

  exec 命令 执行事务。遍历事务命令队列,执行所有命令返回客户端。

四、watch命令

  乐观锁 -- exec执行前,监视的键只要有修改,拒绝执行事务。返回客户端空回复

  修改命令执行后会将客户端的REDIS_DIRTY_CAS标识打开,标志客户端的事务安全性被破坏。

五、Redis事务ACID性质

  1、原子性,要不都执行,要不都不执行。redis不支持回滚机制。

  2、一致性,因为redis对错误命令不执行,所以数据库可以避免没有非法或者无效数据。

    入队错误、执行错误、服务器停机

  3、隔离性,redis是单线程方式执行事务,事务有隔离性。

  4、耐久性,redis开启了持久化,那么事务也会持久化到硬盘。

 

以上是关于Redis 设计与实现 --事务的主要内容,如果未能解决你的问题,请参考以下文章

《Redis设计与实现剖析- 前言》

Redis | 第6章 事件与客户端《Redis设计与实现》

Redis设计与实现 pdf扫描版65M高清下载

Redis | 第8章 发布订阅与事务《Redis设计与实现》#yyds干货盘点#

Redis | 第4章 Redis中的数据库《Redis设计与实现》

Redis | 第7章 Redis 服务器《Redis设计与实现》