掌握Redis事务操作的秘诀

发表时间: 2023-11-14 17:46

Redis 事务支持 ACID吗?

原子性 (原子性):一个事务的多个操作必须完成,或者都不完成。redis没有回滚的概念,不支持原子性

一致性(一致性):事务执行结束后,数据库的完整性约束没有被破坏,事务执行的前后顺序都是合法数据状态。

隔离性(隔离): 事务内部的操作与其他事务是隔离的,并发执行的各个事务之间不能互相干扰。

持久性(持久性):事务一旦提交,所有的修改将永久的保存到数据库中,即使系统崩溃重启后数据也不会丢失。redis支持RDB,AOF两种方式进行持久化。所以支持持久性

redis事务功能是通过MULTI、 EXEC、DISCARD和WATCH 四个原语实现的Redis会将一个事务中的所有命令序列化,然后按顺序执行。单独的隔离操作

事务中的所有命令都会席列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断没有隔离级别的概念

·队列中的命令没有提交之前都不会实际被执行,因为事务提交前任何指令都不会被实际执行不保证原子性

·事务中如果有一条命令执行失败,其后的命令仍然会被执行,没有回滚注:redis的discard只是结束本次事务,正确命令造成的影响仍然存在

1)多命今用干开启一个事务,它总是返回OK。多执行之后,客户端可以继续向服务器发送任意多条命令,这些命令不会立即被执行,而是被放到一个队列中,当执行命令被调用时,所有队列中的命令才会被执行。

2) EXEC:执行所有事务块内的命令。返回事务块内所有命令的返回值,按命令执行的先后顺序排列。当操作被打断时返回空值 nil 。

3)通过调用丢弃,客户端可以清空事务队列,并放弃执行事务,并且客户端会从事务状态中退出。

4) WATCH 命令可以为 Redis 事务提供 check-and-set (CAS)行为。可以监控一个或多个键,一旦其中有一个健被修改(或删除),之后的事务就不会执行,监控一直持续到EXEC命念。