【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取消之前加的监控锁
    • 当客户端丢失连接时
相关推荐
pxzsky2 小时前
PG17数据库安装中分分词插件:pg_jieba
数据库·postgresql·pg_jieba
她说可以呀2 小时前
Redis哨兵
数据库·redis·bootstrap
落落Plus2 小时前
浏览器缓存机制详解
javascript·缓存·浏览器缓存
kirs_ur3 小时前
CXL(Compute Express Link)— 内存扩展的未来
服务器·数据库·性能优化
MonolithIoT4 小时前
实战方案|设备备件无人值守仓库:连续化产线运维备件 7×24 小时数字化管控方案
运维·网络·数据库
瞬间&永恒~4 小时前
【MySQL】4-6:在同一个主机上使用 systemd 运行多个 MySQL服务器
服务器·数据库·mysql
心机之蛙qee5 小时前
Redis的主从、哨兵及集群
数据库·redis·缓存
gwf2165 小时前
磨损均衡算法(Wear Leveling)——SSD如何让每块闪存“公平退休“?
运维·数据库·人工智能·python·嵌入式硬件·算法·智能硬件
AAA@峥5 小时前
CentOS7 源码编译安装 MySQL5.7|SQL 基础操作 + 备份恢复完整实战
运维·数据库·sql·centos
xixingzhe25 小时前
spring ai简单使用skills
数据库·人工智能·spring