zoukankan      html  css  js  c++  java
  • 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-001'QUEUED
    127.0.0.1:6379> set sc 'sc-002'QUEUED
    127.0.0.1:6379> set sc 'sc-003'QUEUED
    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开启了持久化,那么事务也会持久化到硬盘。

  • 相关阅读:
    Codeforces 611C. New Year and Domino 动态规划
    POJ2585 Window Pains 拓扑排序
    HDOJ1242 Rescue(营救) 搜索
    codeforces 数字区分 搜索
    ZOJ2412 Farm Irrigation(农田灌溉) 搜索
    hdu 4389 X mod f(x) 数位dp
    hdu 4734 F(x) 数位dp
    Codeforces Beta Round #51 D. Beautiful numbers 数位dp
    hdu 3652 B-number 数位dp
    bzoj 1026: [SCOI2009]windy数 数位dp
  • 原文地址:https://www.cnblogs.com/sunchong/p/8526541.html
Copyright © 2011-2022 走看看