redis学习笔记之六:Redis的事务

n 概述
Redis中的事务就是一组命令的集合,被依次顺序的执行,当然你可以放弃事务的执
行,那么所有事务里面的命令都不会执行。
关于Redis的事务有几点说明:
1:Redis的事务仅仅是保证事务里的操作会被连续独占的执行,因为是单线程架构,在执行完
事务内所有指令前是不可能再去同时执行其他客户端的请求的
2:Redis的事务没有隔离级别的概念,因为事务提交前任何指令都不会被实际执行,也就不存
在”事务内的查询要看到事务里的更新,在事务外查询不能看到”这种问题了
3:Redis的事务不保证原子性,也就是不保证所有指令同时成功或同时失败,只有决定是否开
始执行全部指令的能力,没有执行到一半进行回滚的能力


n Redis事务的基本过程
1:发送一个事务的命令给Redis,命令是multi
2:依次发送要执行的命令给Redis,Redis接到这些命令,并不会立即执行,而是放到等待执
行的事务队列里面
3:发送执行事务的命令给Redis,命令是exec
4:Redis会保证一个事务内的命令依次执行,而不会被其它命令插入


n 事务过程中的错误处理
1:如果任何一个命令语法有错,Redis会直接返回错误,所有的命令都不会执行
2:如果某个命令执行错误,那么其它的命令仍然会正常执行,然后在执行后返回错误信息
3:Redis不提供事务回滚的功能,开发者必须在事务执行出错后,自行恢复数据库状态


n 事务操作的基本命令
1:multi:设置事务开始
2:exec:执行事务
3:discard:放弃事务
4:watch:监控键值,如果键值被修改或删除,后面的一个事务就不会执行
5:unwatch:取消watch


n Watch说明
1:Redis使用Watch来提供乐观锁定,类似于CAS(Check-and-Set)
2:WATCH 可以被调用多次
3:当 EXEC 被调用后,所有的之前被监视的键值会被取消监视,不管事务是否被取消或者执
行。并且当客户端连接丢失的时候,所有东西都会被取消监视
 

猜你喜欢

转载自blog.csdn.net/u010800970/article/details/81349233