前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis学习12:事务

Redis学习12:事务

作者头像
程序员洲洲
发布2024-06-07 08:33:26
580
发布2024-06-07 08:33:26
举报
文章被收录于专栏:项目文章

事务

  • 就是一个命令执行的队列,将一系列预定命令包装成一个整体(一个队列)。执行的时候,依次按照添加顺序依次执行,中间不会被打断或者干扰。

事务的基本操作

  • 就是将从multi开始的后面的命令加到队列中,不执行,等遇到exec时,开始执行队列命令。
  • 输入multi代表开始。
  • 然后后面输入的命令会返回queued。
  • 然后输入exec。
  • 然后开始输出队列中每个任务的结果。
  • 如下图。
  • 如果事务有问题,那么通过一个命令来取消。
  • 命令:discard
  • 类似回滚。

事务的工作流程

  • discard是直接销毁这个队列,而exec是执行完队列中的事务才销毁队列的。

错误命令

  • 如果定义的过程中,有命令错误,那么这个队列就会没有了。
  • 已经执行完的命令不会回滚的,程序员需要自己在代码中实现回滚的!

事务:锁

  • 也就是说可以对key增加一个监控,也就是锁。如果执行exec前key发生变化了,那么就不执行操作了。
  • watch 和 定义事务之间是可以 进行其他操作的。

在执行exec前,通过另一个客户端 set name 修改name的值,然后再回车exec,就会返回nil。也就是执行不了了。

  • 同时需要注意的是,在事务里面不能执行watch。
  • unwatch 就是取消监控。

分布式锁

  • 监控的是数据,数据会改变的,而不是监控别人能不能改这个值,所以应该用分布式锁。
  • 也就是说,当前的人使用的时候,锁会使得别人不能使用。
  • 操作完毕再用del删掉就可以了。
  • 类似同步锁,那么就是对于多客户端就可以使得别人操作不了。
  • 但是这个方案是一个设计概念,有风险性。
  • 因为锁是客户自己加的,也是他自己删掉的,那么如果客户端忘记了解锁,那么风险就很大了。
  • 那么可以设置一些后手,就是加时效,这样到点不释放,就可以直接释放掉这个锁了。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-06-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 事务
  • 事务的基本操作
  • 事务的工作流程
  • 错误命令
  • 事务:锁
  • 分布式锁
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档