【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取消之前加的监控锁
    • 当客户端丢失连接时
相关推荐
数据库砖家12 分钟前
YashanDB 知识库|轻松打通多库数据,YashanDB DBLink 使用指南!
数据库
二进制_博客13 分钟前
高德MCP制作旅游攻略
数据库·旅游
数据库砖家13 分钟前
YashanDB 知识库|如何用闪回功能救回误删的数据?全流程实战演示
数据库
数据库砖家17 分钟前
YashanDB 知识库|手把手教你回收表空间,释放磁盘的正确姿势!
数据库
一只栖枝22 分钟前
关于OCP认证:有Oracle和MySQL两种
数据库·mysql·oracle·开闭原则·数据管理·ocp认证
小Tomkk35 分钟前
StarRocks SRCA 考试心得总结
数据库·数据库 starrocks·srca
伊织code38 分钟前
cached-property - 类属性缓存装饰器
python·缓存·cache·装饰器·ttl·property·cached-property
千千寰宇44 分钟前
[数据库/SQL] 浅谈DDL、DSL、DCL、DML、DQL
数据库
爱编程的小新☆1 小时前
【MySQL】数据类型和表的操作
java·数据库·mysql
李宥小哥2 小时前
Redis03-基础-C#客户端
开发语言·缓存·中间件·c#