zoukankan      html  css  js  c++  java
  • redis基本的事务操作

    redis基本的事务操作

    redis事务本质:一组命令的集合。一个事务中的所有命令都会被序列化,在事务执行的过程中,会按照顺序执行。一次性、顺序性、排他性的执行一系列命令。

    redis事务没有隔离级别的概念:所有命令在事务中,并没有直接被执行。只有发起执行命令的时候才会执行

    redis单条命令是有原子性的,但是事务不保证原子性

    redis的事务操作:

    • 开启事务
    • 命令入队
    • 执行事务
    127.0.0.1:6379> multi # 开启事务
    OK
    127.0.0.1:6379(TX)> set key1 value1 # 命令入队
    QUEUED
    127.0.0.1:6379(TX)> set key2 value2 # 命令入队
    QUEUED
    127.0.0.1:6379(TX)> get key1 # 命令入队
    QUEUED
    127.0.0.1:6379(TX)> exec # 执行事务
    1) OK
    2) OK
    3) "value1"
    

    放弃事务:事务中的命令都不会被执行

    127.0.0.1:6379> multi # 开启事务
    OK
    127.0.0.1:6379(TX)> set key1 value1 # 命令入队
    QUEUED
    127.0.0.1:6379(TX)> set key2 value2
    QUEUED
    127.0.0.1:6379(TX)> DISCARD # 放弃事务
    OK
    127.0.0.1:6379> get key1 # 事务没有被执行,拿不到key1的值
    (nil)
    

    事务执行发生编译型异常(代码有问题,命令有错),事务中所有命令都不会被执行

    127.0.0.1:6379> multi # 开启事务
    OK
    127.0.0.1:6379(TX)> set key1 value1 # 命令入队
    QUEUED
    127.0.0.1:6379(TX)> set key2 value2
    QUEUED
    127.0.0.1:6379(TX)> getset key1 # 命令错误,编译型异常
    (error) ERR wrong number of arguments for 'getset' command
    127.0.0.1:6379(TX)> set key3 value3
    QUEUED
    127.0.0.1:6379(TX)> exec # 执行事务失败
    (error) EXECABORT Transaction discarded because of previous errors.
    127.0.0.1:6379> get key1 # 事务中的命令没有执行
    (nil)
    

    事务执行发生运行时异常(1/0),那么执行命令的时候,其他命令是可以正常执行的,错误命令抛出异常

    127.0.0.1:6379> set key1 "hello" # key1=hello
    OK
    127.0.0.1:6379> multi # 开启事务
    OK
    127.0.0.1:6379(TX)> incr key1 # key1自增1
    QUEUED
    127.0.0.1:6379(TX)> set key2 value2
    QUEUED
    127.0.0.1:6379(TX)> set key3 value3
    QUEUED
    127.0.0.1:6379(TX)> get key3
    QUEUED
    127.0.0.1:6379(TX)> exec # 执行事务
    1) (error) ERR value is not an integer or out of range # 运行时异常
    2) OK # 命令正常执行
    3) OK
    4) "value3"
    127.0.0.1:6379> get key2 
    "value2"
    
    记得快乐
  • 相关阅读:
    Windows 经典DOS命令大全
    Linux常用命令大全(全面)
    Nova 实现的 Fit Instance NUMA to Host NUMA 算法
    计算机组成原理 — 冯诺依曼体系结构
    计算机组成的基本硬件设备
    OpenStack 高性能虚拟机之大页内存
    Ironic 的 Rescue 救援模式实现流程
    SQLite 版本引发的 Python 程序调用问题
    Ceph 故障修复记录(持续更新)
    注册 Ironic 裸金属节点并部署裸金属实例
  • 原文地址:https://www.cnblogs.com/Y-wee/p/14560774.html
Copyright © 2011-2022 走看看