## 开启事务
## multi
```
decrby 键 值
//增加多少 这是String字符串里的命令
```
```
incrby 键 值
//减少多少 这是String字符串里的命令
```
## 执行事务
```
exec
```
# 真正使用和真正意义上的redis事务
## 语法
```
watch 键1 //监控第一个值
watch 键2 //监控第二个值
multi //开启事务
decrby 键1 100 //键1减去100
incrby 键2 100 //键2加上100
假如第一个值在另外一个地方发生变化或者第二个值在另外地方发生变化,那么就终止事务达到回滚
```
## watch监控键使用语法:
(终止事务用)
```
watch 键 //监控键
multi
```
如果监控的这个键的值,从外部修改或者另外的cil命令窗口开始那么这个事务会停止
```
127.0.0.1:6379> set liu 10000
OK
127.0.0.1:6379> set wang 5000
OK
127.0.0.1:6379> watch liu
OK
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set liu incrby 2000
QUEUED
127.0.0.1:6379> exec
(nil)
//这个nil就是终止了事务
127.0.0.1:6379> get liu
"5000"
127.0.0.1:6379>
```
![](https://img.kancloud.cn/47/43/474300130c968f2cb094f3e739e4aaee_653x393.png)
![](https://img.kancloud.cn/7c/60/7c602b27cbd32c3047aee8ae6bd072ae_1142x454.png)
以上图片代码示例:
```
127.0.0.1:6379> watch liu
OK
127.0.0.1:6379> watch wang
OK
127.0.0.1:6379> DECRBY liu 100
(integer) 4900
127.0.0.1:6379> multi
OK
127.0.0.1:6379> DECRBY liu 100
QUEUED
127.0.0.1:6379> incrby wang 100
QUEUED
127.0.0.1:6379> exec
(nil) //nil就是失败的意思
```
# 事务中进行的演示:
事务进行中::
![](https://img.kancloud.cn/5c/e2/5ce2529e84f9231e5ffd78cc6cb54c84_1060x500.png)
另外一个窗口改变了第一个值
![](https://img.kancloud.cn/2b/8a/2b8aecc319b5e2faa1c5d72778856a9c_1005x532.png)
## 所以导致了事务失败,第二个值没有执行, 这就是事务的意义
- 章节导航
- String命令操作
- string字符类型应用场景
- set get
- incr 自增 decr 自减
- substr字符串截取
- expire 过期时间
- 列出所有的键
- del删除键值
- 获取类型
- rename改键名
- 查看存储键与删除所有键
- Redis 16个数据库操作
- 随机获取一个键
- list(列表)命令操作应用场景
- set(无序集合)命令操作(SADD无序集合 )
- sort set(有序集合) 排序集合(基数数字排序 )
- hash哈希排序类型使用
- redis订阅功能(推送功能)
- redis事务功能
- redis设置密码
- redis持久化aof与rdb及备份恢复的使用
- php操作redis string
- php操作redis set sort set hash list
- thinkphp5使用redis
- thinkphp5.0配置redis中 composer使用说明翻译文件
- reids过期时间设置
- Redis 序列化 排序 迁移数据库操作
- 主机从机设置
- 公网访问方法