Redis事务管理
1、Redis事务介绍
Redis关于事务的功能与MySQL差不多,只是实现方式和部分细节略有不同,但是二者的理论是一样的。主要有以下几点不同:
-
Redis的事务是通过MULTI,EXEC,DISCARD和WATCH这四个命令来完成的;
-
Redis的单个命令都是原子性的,所以Redis的事物指的是一系列命令的集合;
-
Redis将命令集合序列化并确保处于同一事务的命令集合连续且不被打断的执行;
-
Redis不支持回滚操作。
2、命令
- MULTI
- 作用:用于标记事务块的开始。Redis会将后续的命令逐个放入队列中,然后使用EXEC命令原子化地执行这个命令序列。
- EXEC
- 在一个事务中执行所有先前放入队列的命令,然后恢复正常的连接状态
- DISCARD
- 清除所有先前在一个事务中放入队列的命令,然后恢复正常的连接状态。
- WATCH
- 当某个事务需要按条件执行时,就要使用这个命令将给定的键设置为受监控的状态。
- 语法:watch key [key…]
- 注意事项:使用该命令可以实现redis的乐观锁。
- UNWATCH
- 清除所有先前为一个事务监控的键。
- 语法:unwatch
3、简单演示
4、事务失败处理
Redis语法错误(可以理解为编译期错误)
Redis类型错误(可以理解为运行期错误)
5、不支持事务回滚
-
大多数事务失败是因为语法错误或者类型错误,这两种错误,在开发阶段都是可以预见的
5、不支持事务回滚 -
大多数事务失败是因为语法错误或者类型错误,这两种错误,在开发阶段都是可以预见的
-
Redis为了性能方面就忽略了事务回滚
有错误的地方敬请指出,欢迎大家评论区或者私信交流!每日持续更新Java、Python、大数据技术,请大家多多关注!