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

相关推荐
冰暮流星1 分钟前
sql之计算
数据库·sql
dishugj32 分钟前
HANA集群状态监控
数据库·系统架构
小蒜学长1 小时前
基于Java的公司采购系统的设计与实现(代码+数据库+LW)
java·数据库·spring boot·后端·公司采购系统
lee_tianbai1 小时前
Java SSM 电影票预定系统|完整前后端项目,开箱即用(源码分享)
java·开发语言·数据库
SM_YHJ1 小时前
RFID通道门禁与资产台账联动的自动登记技术实现方案
大数据·数据库·人工智能
PaperData1 小时前
2014-2024年省级居民消费结构升级
数据库
砚底藏山河1 小时前
python量化入门:多周期数据对齐统一时间轴
java·数据库·python·金融·maven
Java后端的Ai之路1 小时前
昇腾NPU显存管理避坑指南:从npu-smi输出精准识别空闲卡的底层逻辑与实战
服务器·网络·数据库·npu·大模型服务
禾小西2 小时前
05丨Redis 内存快照:宕机后,如何实现快速恢复?
数据库·redis·缓存
笃行3502 小时前
数据同步软件:KFS 在 KingbaseES 项目里到底解决了什么
数据库