美文网首页
redis之事务

redis之事务

作者: 麦香小瑜儿 | 来源:发表于2018-12-01 14:37 被阅读0次

redis的事务能够确保:

1、事务里面的所有操作能够被连续顺序地执行。事务执行期间,其他客户端的请求不会插入到事务的操作之间执行。

2、原子性:事务的操作,要不被全部执行,要么全部都不执行。

事务的命令

redis的以multi命令开启事务,之后执行事务的操作,最后以exec命令执行事务,如下:

multi

operation1

operation2

...

exec

事务里面的所有操作在执行后,redis服务端都返回QUEUED应答。exec执行返回一个数组的应答,里面的元素分别是每个事务里面操作的返回。

在事务期间如果要撤销之前的操作,执行discard命令,并且退出事务。

事务的错误

redis事务执行过程中,可能有以下两种错误:

1、事务命令入队错误,例如错误的命令类型、错误的命令参数。

2、exec命令执行之后发生的错误,例如命令和key的类型不匹配。

第一种错误由redis的客户端(2.6.5版本之后redis服务端也能够记录事务过程中命令入队异常的错误)来感知,如果事务里面的命令没有返回QUEUED应答,说明入队失败,客户端会主动退出事务。

如果是exec之后发生的错误,redis不会回滚能够正确执行的命令的操作。exec的应答数组对应的命令的应答可以反映出哪个命令发生了错误。

乐观锁和CAS操作

watch命令为redis的事务提供CAS的保证。watch命令后面的key,都会被监视。如果exec命令执行之前,被监视的key任意一个或者多个被修改了,事务执行失败。watch命令能够是redis的事务检测到竞态条件,被监视的key必须都没有被修改事务才能执行。

事务执行之后(无论成功还是失败),或者客户端连接断开,被监视的key都会还原为无监视的状态。也可以通过执行unwatch命令取消所有已监视的key的监视状态。

被监视的key可以被其它连接读取或者修改,所以watch的乐观锁。

相关文章

  • Redis事务

    转载自Redis之Redis事务 Redis事务的概念: Redis 事务的本质是一组命令的集合。事务支持一次执行...

  • redis系列(十):事务

    redis有事务么? redis官方说是有事务的。但这个事务不是我们普遍理解的mysql事务。 redis的事务不...

  • 九、Redis 事务

    Redis 事务 Redis事务描述: Redis事务允许在单个步骤中执行一组命令。以下是Redis事务的两个属性...

  • Redis事务

    redis事务机制 Redis事务与传统关系型事务的比较

  • redis中的事物、消息订阅、持久化

    Redis 中的事务 Redis支持简单的事务 Redis与 mysql事务的对比 注: rollback与dis...

  • Redis简单操作记录

    Redis事务 1.Redis事务本质:一组命令的集合,加入队列,然后执行,执行完事务结束。 redis事务: ①...

  • JavaGuide知识点整理——Redis面试题总结(下)

    Redis事务 如何使用Redis事务? Redis可以通过multi,exec,discard和watch等命令...

  • redis 常用指令

    Redis 的事务 Redis 的事务处理与 RDBMS 的事务有一些不同。首先 Redis 不支持事务的回滚机制...

  • Redis学习笔记:事务

    Redis学习笔记:事务 原文链接:Redis学习笔记:事务 一、事务的描述 和MySQL一样,Redis中也有事...

  • 事务

    简介 MULTI、EXEC、DISCARD、WATCH是redis事务的基础。事务特征如下: redis事务允许将...

网友评论

      本文标题:redis之事务

      本文链接:https://www.haomeiwen.com/subject/dczlcqtx.html