当前位置: 首页 > news >正文

Redis事务

Redis中的事务是指提供一种将多个命令打包到一起,一次性按照顺序执行的机制。Redis在执行事务期间,不会接收处理其他操作命令。

Redis事务有以下局限性
  • 无回滚机制:如果某个命令执行失败,不会影响其他命令的执行,因此Redis的事务无法回滚,可能会出现部分成功,部分失败的情况,需结合WATCH命令完成乐观锁机制。
  • 无法中断:事务执行(EXEC)期间,队列中的命令会一次执行,某个命令失败不会中断其他命令的执行
  • 长耗时命令:事务执行期间会阻塞其他请求,因此要避免长耗时的命令,如keys *
相关命令
  • multi
    开启事务,后续命令进入队列,等待EXEC提交后执行
  • exec
    提交事务,开始执行队列中的所有命令
  • discard
    回滚事务,清空队列中的命令,并取消MULTI模式
  • watch key
    监控指定键,如果事务提交前键被修改,事务失败。所有命令都不会执行成功
  • unwatch
    取消当前客户端对所有键的监控
结合WATCH实现乐观锁控制
  1. watch关键的key
  2. 开启事务
  3. 执行业务操作逻辑
  4. multi + 命令 + exec 提交事务
  5. 若监听的key在事务提交前被修改,则exec执行后会返回nil,业务方可以尝试重试来实现乐观锁功能。
http://www.xdnf.cn/news/274285.html

相关文章:

  • Ubuntu 安装 Docker
  • 二叉搜索树的最近祖先(递归遍历)
  • 【神经网络与深度学习】生成模型-单位高斯分布 Generating Models-unit Gaussian distribution
  • Git 远程操作
  • SpringMVC详解
  • R绘图|3分钟复现瑞士“苏黎世大学”Nature全球地图——基于R包ggplot2+sf等
  • 集成算法学习
  • Ubuntu22.04及以上版本buildroot SIGSTKSZ 报错问题
  • Rockermq的部署与使用(0-1)
  • 理解计算机系统_并发编程(1)_并发基础和基于进程的并发
  • 【leetcode100】最长递增子序列
  • PyTorch数据集与数据集加载
  • ICCV2023 | 视觉Transformer的Token-标签对齐
  • window-docker的容器使用宿主机音频设备
  • 深入探索 Java 区块链技术:从核心原理到企业级实践
  • nginx 核心功能 02
  • 【项目篇之统一硬盘操作】仿照RabbitMQ模拟实现消息队列
  • C++入门小馆:继承
  • 数据库-数据类型,表的约束和基本查询操作
  • SONiC-OTN代码详解(具体内容待续)
  • set autotrace报错
  • K8S的使用(部署pod\service)+安装kubesphere图形化界面使用和操作
  • 【机器学习案列-22】基于线性回归(LR)的手机发布价格预测
  • 【iOS】消息流程探索
  • 基于python的task--时间片轮询
  • 为了结合后端而学习前端的学习日志——【黑洞光标特效】
  • VMware-centOS7安装redis分布式集群
  • 《Java高级编程:从原理到实战 - 进阶知识篇五》
  • 统计学中的p值是什么?怎么使用?
  • Ray开源程序 是用于扩展 AI 和 Python 应用程序的统一框架。Ray 由一个核心分布式运行时和一组用于简化 ML 计算的 AI 库组成