网站代理公司,大气企业网站模板,学室内设计去哪个学校好,长鳖春遇网站开发4.Redis事务 文章目录 4.Redis事务是什么#xff1f;能干嘛#xff1f;Redis 事务 VS 数据库事务命令总结 是什么#xff1f;
可以一次执行多个命令#xff0c;本质是一组命令的集合。一个事务中的所有命令都会序列化#xff0c;按顺序地串行化执行而不会被其它命令插入能干嘛Redis 事务 VS 数据库事务命令总结 是什么
可以一次执行多个命令本质是一组命令的集合。一个事务中的所有命令都会序列化按顺序地串行化执行而不会被其它命令插入不许加塞。
能干嘛
在一个队列中一次性、顺序性、排他性地执行一系列命令。
Redis 事务 VS 数据库事务
单独的隔离操作Redis的事务仅仅是保证事务里的操作会被连续独占的执行Redis命令执行时单线程架构在执行完事务内所有指令前是不可能再去同时执行其他客户端的请求的。没有隔离级别的概念因为事务提交前任何指令都不会被实际执行也就不存在“事务内的查询要看到事务里的更新在事务外查询不能看到”这种问题了不保证原子性Redis的事务不保证原子性也就是不保证所有指令同时成功或同时失败只有决定是否开始执行全部指令的能力没有执行到一半进行回滚的能力。排他性Redis会保证一个事务内的命令依次执行而不会被其他命令插入。
命令
开始事务multi开始一个事务
入队命令将多个命令放入队到事务中接到这些命令并不会马上执行而是放到等待执行的事务队列中
执行事务exec命令触发事务
watch key1 key2 … : 监视一个或多个key,如果在事务执行之前被监视的key被其他命令改动则事务被打断 乐观锁
multi标记一个事务块的开始
exec执行所有事务块的命令 一旦执行exec后之前加的监控锁都会被取消掉
discard : 取消事务放弃事务块中的所有命令
unwatch :取消watch对所有key的监控
127.0.0.1:6379 MULTI
OK
127.0.0.1:6379(TX) set k1 v1
QUEUED
127.0.0.1:6379(TX) set k2 v2
QUEUED
127.0.0.1:6379(TX) set k3 v3
QUEUED
127.0.0.1:6379(TX) INCR count
QUEUED
127.0.0.1:6379(TX) EXEC
1) OK
2) OK
3) OK
4) (integer) 2
127.0.0.1:6379 get k3
v3总结
一旦执行力exec,之前加的监控锁都会被取消。
当客户端连接丢失的时候例如退出连接所有的东西都会被取消监视。