事务
*ACID, 指数据库事务正确执行的四个基本要素的缩写包含: 原子性 (Atomicity) 一致性 (Consistency) 隔离性 (Isolation) 持久性(Durability)
redis 通过 multi exec watch 实现事务
事务开始
命令入队
事务执行
一事务开始 -- mulit
mulit 标志事务开始, 将客户端从非事务状态切换到事务状态
- # redis-cli
- 127.0.0.1:6379> multi
- OK
- 127.0.0.1:6379> set sc sc-001QUEUED
- 127.0.0.1:6379> set sc sc-002QUEUED
- 127.0.0.1:6379> set sc sc-003QUEUED
- 127.0.0.1:6379> get scQUEUED
- 127.0.0.1:6379> exec
- 1) OK
- 2) OK
- 3) OK
- 4) "sc-003"
- 127.0.0.1:6379>
二命令入队
客户端 - 非事务状态: 输入的命令立即执行
客户端 - 事务状态: 输入命令 exec discard watch mulit 会立即执行, 其他不立即执行, 而将命令入队等待执行
三事务执行 --exec
exec 命令 执行事务遍历事务命令队列, 执行所有命令返回客户端
四 watch 命令
乐观锁 -- exec 执行前, 监视的键只要有修改, 拒绝执行事务返回客户端空回复
修改命令执行后会将客户端的 REDIS_DIRTY_CAS 标识打开, 标志客户端的事务安全性被破坏
五 Redis 事务 ACID 性质
1 原子性, 要不都执行, 要不都不执行 redis 不支持回滚机制
2 一致性, 因为 redis 对错误命令不执行, 所以数据库可以避免没有非法或者无效数据
入队错误执行错误服务器停机
3 隔离性, redis 是单线程方式执行事务, 事务有隔离性
4 耐久性, redis 开启了持久化, 那么事务也会持久化到硬盘
来源: http://www.bubuko.com/infodetail-2521871.html