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

相关推荐
爱写代码的阿森7 分钟前
鸿蒙三方库 | harmony-utils之KvUtil键值型数据库操作详解
数据库·华为·harmonyos·鸿蒙·huawei
Database_Cool_25 分钟前
单机 MySQL 迁移到分布式数据库方便吗?阿里云 PolarDB-X 100% MySQL 协议兼容零改造平滑迁移
数据库·分布式·mysql
姜太小白1 小时前
【MySQL】 索引优化实战:解决 WHERE 等值 + IS NULL 查询,TEXT 字段报错 1167 的完整指南
数据库·mysql
窝子面2 小时前
手搓最简前后端协作-node
javascript·数据库
吳所畏惧2 小时前
宝塔面板Redis密码修改指南:SSH命令修改 vs 面板UI界面修改,哪个更靠谱?
运维·服务器·数据库·redis·缓存·ssh
DFT计算杂谈2 小时前
无 Root 权限在 Tesla K80 零门槛部署 DeepSeek 大模型
linux·服务器·网络·数据库·机器学习
HPFBoy2 小时前
log4net 数据库存日志正确配置
数据库
赵丙双2 小时前
Redis 概率相关的数据类型
redis
liuxiaowei32 小时前
【绝版教程】新版MySQL DBA高级实战进阶班 MySQL8.0 姜承尧-腾讯数据库总监
数据库·mysql·dba