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命令触发事务

相关推荐
一叶飘零_sweeeet5 小时前
从手写 Redis 分布式锁到精通 Redisson:分布式系统的并发控制终极指南
redis·分布式·redisson
睡觉的时候不会困5 小时前
Redis 主从复制详解:原理、配置与主从切换实战
数据库·redis·bootstrap
程序员的世界你不懂7 小时前
【Flask】测试平台开发,新增说明书编写和展示功能 第二十三篇
java·前端·数据库
自学也学好编程7 小时前
【数据库】Redis详解:内存数据库与缓存之王
数据库·redis
JAVA不会写8 小时前
在Mybatis plus中如何使用自定义Sql
数据库·sql
IT 小阿姨(数据库)8 小时前
PgSQL监控死元组和自动清理状态的SQL语句执行报错ERROR: division by zero原因分析和解决方法
linux·运维·数据库·sql·postgresql·centos
ChinaRainbowSea8 小时前
7. LangChain4j + 记忆缓存详细说明
java·数据库·redis·后端·缓存·langchain·ai编程
小马学嵌入式~9 小时前
嵌入式 SQLite 数据库开发笔记
linux·c语言·数据库·笔记·sql·学习·sqlite
Java小白程序员10 小时前
MyBatis基础到高级实践:全方位指南(中)
数据库·mybatis
Monly2110 小时前
人大金仓:merge sql error, dbType null, druid-1.2.20
数据库·sql