Redis 事务

1.基本概念:

        Redis 事务(Redis Transactions)允许将一组命令按照顺序执行,并且保证这些命令在事务中要么全部执行成功,要么全部不执行。Redis 通过 MULTIEXECDISCARDWATCH 这些命令实现了事务功能。                

2.四个关键命令:

  • MULTI:标记事务的开始。在调用 MULTI 后,所有接下来的命令都会进入一个队列,等到执行 EXEC 时才会依次执行。

  • EXEC:执行所有在 MULTI 后排队的命令。如果在事务期间有任何错误(如语法错误),该命令会导致整个事务执行失败。

  • DISCARD:取消事务,放弃所有 MULTI 之后排队的命令。

  • WATCH:在事务执行之前监视一个或多个键。如果这些键在事务执行前被修改,则事务不会执行,而是返回空结果(类似乐观锁机制)。

3.示例:

MULTI           # 开始事务
SET key1 value1 # 将 key1 设置为 value1
INCR key2       # 对 key2 执行递增操作
EXEC            # 执行事务

        如果在 MULTI 之后执行命令时有错误,Redis 会记录该错误,但并不会影响后续命令进入队列。只有当执行 EXEC 时,Redis 才会检查是否有语法错误。如果所有命令都合法,Redis 会按顺序执行;否则,整个事务失败。

4.Redis 事务的特性:

  • 原子性:事务中的每个命令是单独执行的,Redis 不保证事务中的命令是原子操作,也就是说,其他客户端可以在事务执行的过程中访问这些数据。它不同于 SQL 数据库的隔离级别,Redis 事务并不具备真正的隔离性。
  • 单一性:在 Redis 事务中,每条命令都会按照顺序执行,但执行过程中其他客户端可以插入命令或修改数据。

5.Redis 的事务模式具备如下特点:

       (1).不保证隔离性;

       (2).无法保证持久性;

       (3).具备了一定的原子性,但不支持回滚

       (4).一致性的概念有分歧,假设在一致性的核心是约束的语意下,Redis 的事务可以保证一致性

6.总结:

        Redis 事务适合用于需要将多个操作捆绑在一起的场景,但需要注意事务并不能保证与 SQL 数据库类似的严格隔离性或回滚特性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值