zoukankan      html  css  js  c++  java
  • Redis 事务

    一、Redis 事务是什么

    Redis 事务可以一次执行多个命令, 并且带有以下两个重要的保证:

    • 事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。
    • 事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行。

    一个事务从开始到执行会经历以下三个阶段:

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

    二、Redis Multi 命令

    Redis Multi 命令用于标记一个事务块的开始。

    事务块内的多条命令会按照先后顺序被放进一个队列当中,最后由 EXEC 命令原子性(atomic)地执行。

    三、Redis Exec 命令

    Redis Exec 命令用于执行所有事务块内的命令。

    三、Redis Watch 命令

    Redis Watch 命令用于监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。

    事务执行后,Watch 命令失效;也就是说下次事务执行不会监视这个 key 是否被其他命令改动。

    实例:

    # 事务被成功执行
     
    redis 127.0.0.1:6379> MULTI               # 标记开始执行事务
    OK
     
    redis 127.0.0.1:6379> INCR user_id        # 事务中执行的命令
    QUEUED
     
    redis 127.0.0.1:6379> INCR user_id
    QUEUED
     
    redis 127.0.0.1:6379> INCR user_id
    QUEUED
     
    redis 127.0.0.1:6379> PING
    QUEUED
     
    redis 127.0.0.1:6379> EXEC               # 执行事务
    1) (integer) 1
    2) (integer) 2
    3) (integer) 3
    4) PONG
     
     
    # 监视 key ,且事务成功执行
     
    redis 127.0.0.1:6379> WATCH lock lock_times
    OK
     
    redis 127.0.0.1:6379> MULTI
    OK
     
    redis 127.0.0.1:6379> SET lock "huangz"
    QUEUED
     
    redis 127.0.0.1:6379> INCR lock_times
    QUEUED
     
    redis 127.0.0.1:6379> EXEC
    1) OK
    2) (integer) 1
     
     
    # 监视 key ,且事务被打断
     
    redis 127.0.0.1:6379> WATCH lock lock_times
    OK
     
    redis 127.0.0.1:6379> MULTI
    OK
     
    redis 127.0.0.1:6379> SET lock "joe"        # 就在这时,另一个客户端修改了 lock_times 的值
    QUEUED
     
    redis 127.0.0.1:6379> INCR lock_times
    QUEUED
     
    redis 127.0.0.1:6379> EXEC                  # 因为 lock_times 被修改, joe 的事务执行失败
    (nil)

     

     

     

  • 相关阅读:
    关于医保卡的正确使用
    mysql rpm安装,以及修改charset
    hql小经验
    工资构成
    distinct 与order by 一起用
    服务器设置浏览器的文档模式
    项目管理
    show processlist 各个状态说明
    sql 查询优化
    定时器备份数据库
  • 原文地址:https://www.cnblogs.com/DillGao/p/8496184.html
Copyright © 2011-2022 走看看