redis事务

Redis 事务 事务可以理解为一个打包的批量执行脚本,但批量指令并非原子化的操作,中间某条指令的失败不会导致前面已做指令的回滚,也不会造成后续的指令不做。
https://www.runoob.com/redis/redis-transactions.html

Redis 事务可以一次执行多个命令, 并且带有以下三个重要的保证:

批量操作在发送 EXEC 命令前被放入队列缓存。
收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。
在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中。

一个事务从开始到执行会经历以下三个阶段:

开始事务。
命令入队。
执行事务。

https://blog.csdn.net/kingmax54212008/article/details/82731150

一个事务从开始到执行会经历以下三个阶段:

开始事务。
命令入队。
执行事务。

在事务和非事务状态下执行命令

无论在事务状态下, 还是在非事务状态下, Redis 命令都由同一个函数执行, 所以它们共享很多服务器的一般设置, 比如 AOF 的配置、RDB 的配置,以及内存限制,等等。

不过事务中的命令和普通命令在执行上还是有一点区别的,其中最重要的两点是:

非事务状态下的命令以单个命令为单位执行,前一个命令和后一个命令的客户端不一定是同一个;

而事务状态则是以一个事务为单位,执行事务队列中的所有命令:除非当前事务执行完毕,否则服务器不会中断事务,也不会执行其他客户端的其他命令。

在非事务状态下,执行命令所得的结果会立即被返回给客户端;

而事务则是将所有命令的结果集合到回复队列,再作为 EXEC 命令的结果返回给客户端。

discard

命令用于取消事务,放弃执行事务块内的所有命令。

exec

用于执行所有事务块内的命令。

multi

用于标记一个事务块的开始。事务块内的多条命令会按照先后顺序被放进一个队列当中,最后由 EXEC 命令原子性(atomic)地执行。

unwatch

用于取消 WATCH 命令对所有 key 的监视。

watch

用于监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断

posted @ 2020-03-21 23:18  段佳伟  阅读(192)  评论(0编辑  收藏  举报