151
社区成员
发帖
与我相关
我的任务
分享
指一件要做的事。在 Redis 中,事物本质上是指一组操作命令的集合。
一个事务在执行一次之后便无效了。换句话说,一个事务只能执行一次。
在事务的执行过程中,命令集合中的命令会顺序执行
在事务对某一个数据进行操作的时候,该数据不能被其他事务所操作

| 命令 | 作用 |
|---|---|
| multi | 启动事务 |
| exec | 事务执行 |
| discard | 取消该事务(执行该命令后,该事务过程便会取消,已经输入的命令不会进入命令列) |
事务中的异常主要体现在「命令入列」环节中,如果命令输入错误,将会引发「编译时异常」;如果命令的执行逻辑发生错误,也会造成「运行时异常」
编译时异常发生的时候,事务不会执行。执行之后会报错
(error) EXECABORT Transaction discarded because of previous errors.
执行时异常发生时,只有该命令不会执行,其他没有错误的异常仍然会正常执行
悲观锁:认为什么时候都可能出错,所以在任何时候都会加锁
乐观锁:认为什么时候都不会出错,所以什么时候都不会加锁,在更新的时候都要去判断,在次期间是否有人修改了数据。
在 Redis 中,使用 watch 命令去监视某一个数据。在给字段添加监控的情况下通过事务去操作字段,如果在未提交时,有新的命令修改了字段值,那么事务一定会提交失败。
相应的,可以使用 unwatch命令取消对某一个数据的监视。