redis 事务

redis事务是什么
  • 可以一次执行多个命令,本质是一组命令的集合
  • 一个事务中所有的命令都会序列化 按顺序的串行化执行而不会被其他命令插入 不许加塞
能干什么
  • 一个队列中 一次性 顺序的 排他性的执行一系列命令
怎么弄
  • 常见命令
    • multi 标记一个事务块的开始
    • exec 执行所有事务块内的命令
    • discard 取消事务 放弃执行事务块内的所有命令
    • unwatch 取消watch命令对所有key的监视
    • watch key1 key2... 监视一个key 如果事务执行之前这个key被其他命令所改动 那么事务将被打断
  • 正常执行
  • 放弃事务
  • 全体失效
  • 取消h执行错误的指令
  • watch监控
    • redis使用watch 来提供乐观锁锁定 类似于cas check and set
      • 一容具荣 一损俱损
      • 监控 key
      • 在multi内修改前 被另一个端口修改后 multi内的命令都会失效 就类似于 multi内的指令语法由错误
    • 初始化 k1 和balance 两个key先监控 再开启multi 保证两个key变动在同一个事务内
redis 与 mysql
单独的隔离操作 Redis的事务仅仅是保证事务里的操作会被连续独占的执行,redis命令执行是单线程架构,在执行完事务内所有指令前是不可能再去同时执行其他客户端的请求的
没有隔离级别的概念 因为事务提交前任何指令都不会被实际执行,也就不存在"事务内的查询要看到事务里的更新,在事务外查询不能看到"这种问题了
不保证原子性 Redis的事务不保证原子性,也就是不保证所有指令同时成功或同时失败,只有决定是否开始执行全部指令的能力,没有执行到一半进行回滚的能力
排他性 Redis会保证一个事务内的命令依次执行,而不会被其它命令插入
总结

开启 multi 开始一个事务

入队 将多个命令入队到事务中 接到这些命令不会立即执行 而是放到等待执行的事务中的队列里面

执行 由exec命令触发事务

相关推荐
zhengfei61138 分钟前
Go-fastdfs /reload 未授权访问: 有效PoC
数据库·sql
DevOpenClub1 小时前
高考教育信息问答 API:会话参数、资料引用与流式响应
java·数据库·高考
yuanyuan3341 小时前
2026枣庄带检测报告伸缩门品牌测评|本地服务
大数据·数据库·人工智能·伸缩门
wdyan2971 小时前
带着小白学习-微服务-5 实战:配置中心-数据库连接
数据库·学习·微服务
大维2 小时前
DBX 实测:从 SQLite 查询到 MiniMax-M3 自然语言生成 SQL
数据库·sql·sqlite
玖米GEO运营王总监3 小时前
2026年账号矩阵协同效应怎么量化:三个指标与公式结构
java·大数据·数据库
我不会起名字3223 小时前
Redis 从 0 到 1(二十九):CPU 突然 100%——commandstats 定位法与 6 步排查链路
redis·cpu·慢查询·排查·commandstats
code2cat4 小时前
【随笔】KV缓存卸载:逐层预取能藏住多少传输时间
人工智能·缓存·大语言模型
景煜拾年4 小时前
InnoAI SQL 助手
运维·数据库·笔记·sql
我不会起名字3225 小时前
Redis 从 0 到 1(二十八):Redis 抖一下,重试把它打挂了——超时/重试/熔断的 Go 封装
redis·go·超时·熔断·重试