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

Redis中的事务管理

作者头像
吉林乌拉
发布2019-10-24 22:50:50
4390
发布2019-10-24 22:50:50
举报
文章被收录于专栏:吉林乌拉

在之前的文章中我们已经介绍了很多关于Redis中的命令,虽然命令的执行是原子性的,但是如果多条命令组合在一起则Redis就不能保证组合命令的原子性了。并且如果我们接触关系型数据库,那么我们一定会知道,在关系型数据库中提供了事务管理的功能,通过事务我们可以保证一组动作,要么全部成功,要么全部失败。在Redis中也提供了类似的功能,但Redis中的事务管理和关系型数据库中事务管理还是有区别的。下面我们详细介绍一下Redis中的事务管理。

在Redis中我们可以通过multi和exec两个命令来实现简单的事务管理。multi命令代表事务的开始,exec命令代表事务的结束,在使用时这两个命令之间执行的命令都是原子性的。

下面我们看具体的使用。

我们看上图所示知道在使用Redis事务管理时,我们在multi和exec两个命令之间执行成功的命令,返回的结果是QUEUED的。这代表着命令并没有真正的执行,而暂时保存到Redis中。如果此时我们使用另一个客户端获取上图中key时,则返回的结果一定是0,因为命令并没有执行成功,也就是事务并没有提交。

只有当执行exec命令时,Redis中的事务才会提交。提交后我们在客户端执行刚刚的命令,则会获取到事务中执行成功的数据。

如果我们想要停止事务,则可以使用discard命令。

下面我们介绍一下在使用Redis事务时的注意事项。

  • 命令错误:如果我们在使用事务时,如果执行命令有错误,则会造成事务无法提交。
  • 运行时错误:如果我们在事务中执行的命令本身没有语法错误时,例如将sadd命令写成了zadd命令,这种就是运行时错误了。这种错误Redis会成功的将事务提交,所以遇到这种错误时,需要开发人员自行处理了。

在某些业务中,为了确保事务中的key没有被其它客户端修改过,才提交事务,否则不执行类似乐观锁一样。在Redis中我们可以watch命令来解决这类问题。下面我们看一下具体操作。

客户端一:

客户端二:

这就是Redis中事务管理的功能,它和传统的关系型数据库中的事务相比,Redis中事务管理要简单的多,因为关系型数据库中的事务支持很多复杂的逻辑计算,并且支持回滚功能。而Redis中事务管理不支持上述功能。这也是它们之间的主要区别。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-10-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 吉林乌拉 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 在Redis中我们可以通过multi和exec两个命令来实现简单的事务管理。multi命令代表事务的开始,exec命令代表事务的结束,在使用时这两个命令之间执行的命令都是原子性的。
  • 下面我们看具体的使用。
  • 下面我们介绍一下在使用Redis事务时的注意事项。
相关产品与服务
云数据库 Redis®
腾讯云数据库 Redis®(TencentDB for Redis®)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档