【Redis】事务

Redis事务是一组命令的集合。这组命令顺序化执行而不会被其他命令插入。

Redis事务命令

命令 描述
DISCARD 取消事务,放弃执行
EXEC 执行事务
MULTI 标记事务的开始
UNWATCH 取消WATCH对所有key的监控
WATCH 监控所有key

Redis事务特点

特点 说明
单独的隔离操作 Redis命令执行是单线程的,在执行完事务内所有指令前无法同时执行其他客户端的请求
没有隔离级别的概念 在事务提交前任何指令都不会被实际执行
不保证原子性 不保证所有指令同时成功或者失败,无法执行到一半进行回滚
排他性 Redis会保证一个事务内命令依次执行,不会被其他命令插入

具体的使用方式:

  • 正常执行

    复制代码
    MULTI
    redis语句...
    EXEC
  • 放弃执行

    复制代码
    MULTI
    redis语句
    DISCARD
  • 发生语法错误
    假设在MULTI...EXEC中的某一条redis语句发生语法错误,则整个事务都不会执行

  • 发生执行错误
    假设在MULTI...EXEC中的redis语句没有语法错误,但是在执行过程中发现了错误,则除了这条语句,其他语句都正常执行。

  • WATCH监控
    Redis使用Watch来提供乐观锁定,类似于CAS,Redis在修改时会检测数据是否被更改,如果更改了则执行失败。手动取消监控锁使用unwatch,自动取消监控锁有两种方式:

    • 执行exec取消之前加的监控锁
    • 当客户端丢失连接时
相关推荐
计算机毕设定制辅导-无忧学长5 小时前
西门子 PLC 与 Modbus 集成:S7-1500 RTU/TCP 配置指南(一)
服务器·数据库·tcp/ip
KK溜了溜了5 小时前
JAVA-springboot 整合Redis
java·spring boot·redis
程序员柳5 小时前
基于微信小程序的校园二手交易平台、微信小程序校园二手商城源代码+数据库+使用说明,layui+微信小程序+Spring Boot
数据库·微信小程序·layui
梦在深巷、6 小时前
MySQL/MariaDB数据库主从复制之基于二进制日志的方式
linux·数据库·mysql·mariadb
IT乌鸦坐飞机6 小时前
ansible部署数据库服务随机启动并创建用户和设置用户有完全权限
数据库·ansible·centos7
IT_10246 小时前
Spring Boot项目开发实战销售管理系统——数据库设计!
java·开发语言·数据库·spring boot·后端·oracle
祁思妙想7 小时前
八股学习(三)---MySQL
数据库·学习·mysql
惊骇世俗王某人7 小时前
1.MySQL之如何定位慢查询
数据库·mysql
秦歌6668 小时前
向量数据库-Milvus快速入门
数据库·milvus
苦夏木禾8 小时前
js请求避免缓存的三种方式
开发语言·javascript·缓存