redis: 事务管理(九)
2024-09-07 11:58:10
redis的事务 不保证原子性
三个步骤:开启事务、命令入队、执行事务
开启事务:multi
执行事务:exec
127.0.0.1:6379> multi #开启事务
OK
127.0.0.1:6379> set name applesnt #命令入队
QUEUED
127.0.0.1:6379> set age 12 #命令入队
QUEUED
127.0.0.1:6379> get name #命令入队
QUEUED
127.0.0.1:6379> exec #执行事务 输出结果
1) OK
2) OK
3) "applesnt"
取消事务:discard
127.0.0.1:6379> multi #开启事务
OK
127.0.0.1:6379> set name applesnt #命令入队
QUEUED
127.0.0.1:6379> discard #取消事务
OK
127.0.0.1:6379> get name #事务队列不会被执行
(nil)
事务处理(编译时事务):一个事务里 命令出错 整个事务就不会被执行
12127.0.0.1:6379> multi
OK
127.0.0.1:6379> set name applesnt #set一个name
QUEUED
127.0.0.1:6379> getset name #没有getset这条命令 会报错
(error) ERR wrong number of arguments for 'getset' command
127.0.0.1:6379> set age 12 #继续set一个age
QUEUED
127.0.0.1:6379> get name #获取name的值
QUEUED
127.0.0.1:6379> exec #事务提交失败
(error) EXECABORT Transaction discarded because of previous errors.
127.0.0.1:6379> get name #事务没有执行成功
(nil)
事务处理(运行时事务):一个事务里 其中一条运行出错 其他正确的运行会执行成功
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set count "v1"
QUEUED
127.0.0.1:6379> incr count #对字符串加1 运行时会出错
QUEUED
127.0.0.1:6379> set name applesnt
QUEUED
127.0.0.1:6379> get name
QUEUED
127.0.0.1:6379> exec #成功了三条 失败了一条
1) OK
2) (error) ERR value is not an integer or out of range
3) OK
4) "applesnt"
127.0.0.1:6379> get count
"v1"
最新文章
- Python之控制台输入密码的方法
- 使用“Empty 模式”改进 Null Object
- 扩展duilib edit控件的提示功能和多种文字颜色(解决edit为password显示不正常的bug)
- 【练习】ORACLE统计信息--直方图
- vim分屏快捷键使用/增大/减小字体使用
- HDU 5266 pog loves szh III
- 17.1.1.5 Creating a Data Snapshot Using mysqldump 创建一个快照使用mysqldump:
- Javascript中valueOf与toString区别
- Exams
- 【转】iOS开发路线简述
- java 包命名规范
- 关于ZK框架的onScroll事件的问题
- Android实现RecyclerView侧滑删除和长按拖拽-ItemTouchHelper
- Postman----支持markdown可自动生成接口文档
- python 实现神经网络算法
- c++11并行、并发与多线程编程
- Andorid之官方导航栏Toobar
- MySQL 性能监控4大指标——第二部分
- Android攻城狮学习笔记-进阶篇一
- tooltip提示文字