Redis的事务和锁
小于 1 分钟
注意
Redis单条命令保证原子性
Redis事务不保证原子性
1. Redis事务
Redis事务中所有命令都会被序列化,在执行过程中会按照顺序执行,具有以下性质:
- 一次性
- 顺序性
- 排他性
Redis事务没有隔离级别的概念,命令在事务中并没有执行,而是发起执行命令Exec
的时候才执行
# 1. 开启事务
mutlti
# 2. 其他命令
...
# 3. 执行
exec
# 4. 取消
discard
如果命令发送了编译型异常,则所有命令都不会执行;如果是运行时异常,那么其他命令会执行,错误命令抛出异常
2. 锁
使用watch充当乐观锁
# 1. 监视
watch key
# 2. 开启事务
mutlti
# 3. 其他命令
...
# 4. 执行
exec
# 5. 取消
discard
# 6. 取消监视
unwatch key